6

現在、自動スケーリングの負荷分散されたアプリサーバーの配列にPHPセッションファイルストレージ用のNASを使用しています。

これをより堅牢なソリューションに置き換えることに関心があり、AmazonのDynamoDBは面白そうです。ここに1つの考えられる問題があり、ここに文書化されています。

http://thwartedefforts.org/2006/11/11/race-conditions-with-ajax-and-php-sessions/

DynamoDBはオブジェクトロックをサポートしていないと思います。あなたが考えることができる回避策はありますか?

PHPセッションに使用される他のNoSQLシステムの経験がある場合は、学習内容も同様である可能性があるため、気軽に参加してください。

前もって感謝します

4

4 に答える 4

9

DynamoDBの条件付き書き込みを使用すると、PHPのデフォルトのセッションハンドラーが機能するのと同様の悲観的なロックスキームを実装できます。

他の誰かがDynamoDBセッションハンドラーをリクエストしました:https ://forums.aws.amazon.com/thread.jspa?messageID=328060 。

更新: AWS SDK for PHPに、DynamoDBのセッションハンドラーが含まれるようになりました。https://github.com/amazonwebservices/aws-sdk-for-php/blob/master/extensions/dynamodbsessionhandler.class.phpおよびhttp://docs.amazonwebservices.com/AWSSDKforPHP/latest/#i=DynamoDBSessionHandlerを参照してください

更新: AWSブログにDynamoDBセッションハンドラーに関する記事があります:http://aws.typepad.com/aws/2012/04/scalable-session-handling-in-php-using-amazon-dynamodb.html

于 2012-03-15T17:21:17.233 に答える
2

興味深いアイデア(+1)-そして確かに手の込んだ記事ですが、今のところそれをざっと見ただけです;)

PHPセッションストレージの他のNoSQLオプションについては、MongoSession – PHP MongoDBセッションハンドラーを確認することをお勧めします。これは、AjaxおよびPHPセッションの競合状態も参照し、その間に文書化された問題に対処しているようです。

最近、ライブラリを更新して、セッション書き込みとガベージコレクションの両方でアトミック操作をサポートし、これらの競合状態を防止できるようにしました。

条件付き更新アトミックカウンターコンシステントリードを適切に組み合わせることで、Amazon DynamoDBでも同様のアプローチが可能になります。これらの概念の詳細については、Amazon DynamoDBのアイテムの操作を参照するか、次のFAQエントリを確認してください。

于 2012-01-25T11:37:13.863 に答える
1

サーバーはAWS上にありますか?ElastCache機能を試してみませんか?http://aws.amazon.com/en/elasticache/

私はCakePHPを使用していますが、魔女はセッションを保存するためにDBとMemcacheをサポートしています。しばらくの間両方を調べた後、私はMemcacheを選択しました。実際、セッションをMemcacheに保存するようにPHPを設定し、phpセッション構成を使用するようにCakePHPを設定しました。このようにして、セッションとキャッシュのためにmemcacheインスタンスを分離できます。

よろしく。

于 2012-03-08T17:13:46.810 に答える
1

Amazonは新しいDynamoDBセッション機能をリリースしました:http://aws.typepad.com/aws/2012/04/scalable-session-handling-in-php-using-amazon-dynamodb.html

于 2012-05-02T01:58:01.443 に答える