1

Zend HTTP クライアントを使用して、サードパーティ サービスと通信するための Web クライアントを実装しています。クライアントの新しいバージョンをインスタンス化するたびに再ログインする必要がないように、各呼び出しでサービスからの Cookie を利用できるようにシングルトン パターンにすることを考えていました。

クライアントには複数のクラスがあり、おそらくコード内のいくつかの異なる場所から一度に通信しようとします。シングルトン クライアントを使用すると、複数のエンティティが同時に使用しようとすると競合状態が発生するのではないかと心配しています。

これは、PHP HTTP クライアントのシングルトン パターンの問題ですか? もしそうなら、これらの問題を起こさずに複数のトランザクションにわたって Cookie を保存および使用できる Zend HTTP クライアントの利点を得る他の方法はありますか?

4

1 に答える 1

0

PHP はマルチスレッド化されていないため、これだけで競合状態が発生することはありません。

同時に複数のリクエストがあり、共有リソース (サーバー上のファイルなど) を使用している場合に可能です。その場合、 などの適切なロックを設定する必要がありますflock()

セッションごとに Cookie を保存することもできます。つまり、シェアード ナッシング アーキテクチャです。これで問題も解決するはずです。

于 2012-09-28T16:26:43.003 に答える