3

Zendがセッションを処理する方法にほとんど不満を感じていました。

これが私の場合です。Zend_Auth を使用してユーザー資格情報を常にチェックする認証プラグインを作成します。zend auth から hasIdentity 関数を呼び出すと、自動的にセッションが開始されます。

問題は、実行する必要がある長いプロセスがある場合に発生します。セッションは、リクエストが完了するまでリクエストをロックします。Zend_Session::writeClose(false) を呼び出してロックを解除しようとすると、別のリクエストを実行できるようになります。しかし、セッションを再開する方法はありません。

停止したセッションを再開しようとすると実装が悪いのでしょうか?

開始からリクエストの実行が終了するまでのセッションは 1 つだけですか?

ありがとう。

ps : ここで少しハックできます。認証プラグインの最後に、ネイティブ php 関数 (session_write_close) を記述し、コントローラーがセッションを再度使用する必要がある場合は、(session_start) で再度開始します。

4

1 に答える 1

1

この問題の最も簡単な解決策は、セッション ストレージにデータベースを使用することです。心配するファイルロックはありません(ArneRieが言及したように)。

オプション1

一般的な PHP 拡張機能を使用し、php.ini を微調整します。

それらを NFS エクスポートに保存したり、たとえば SQL バックエンドを使用して session_set_save_handler を再コーディングしたりできます。しかし、memcached を使用するよりも効率的で、スケーラブルで、パフォーマンスが高く、展開が容易なソリューションはありません…

チュートリアル: http://www.dotdeb.org/2008/08/25/storing-your-php-sessions-using-memcached/

オプション 2

Zend_Session_SaveHandler_DbTable を介した Zend の方法。

例: Zend - セッション データをデータベースに保存する

于 2012-03-10T10:29:45.493 に答える