PHP のセッションが引き起こす可能性のある同時実行性の問題の簡単な分析、session_PHP チュートリアルの簡単な分析

WBOY
リリース: 2016-07-13 09:45:55
オリジナル
799 人が閲覧しました

同時実行の問題を引き起こす可能性のある PHP のセッションの簡単な分析、セッションの簡単な分析

Web アプリケーションを開発するとき、人々はデータを保存するためにセッションを使用することがよくあります。しかし、PHP では Session を不適切に使用すると同時実行の問題が発生する可能性があることを知らない人もいるかもしれません。インドの医療業界向けソフトウェア ソリューション プロバイダーである Plus91 Technologies のシニア エンジニア、Kishan Gor 氏が個人ブログでこの問題について説明しました。

同じクライアントが複数のリクエストを同時に送信し、各リクエストがセッションを使用する場合、PHP セッション ロックの存在により、サーバーはこれらのリクエストに並列ではなく逐次的に応答します。これは、デフォルトで PHP がファイルを使用してセッション データを保存するためです。新しいセッションごとに、PHP はファイルを作成し、そこにデータを書き込み続けます。したがって、session_start() メソッドが呼び出されるたびに、Session ファイルが開かれ、ファイルの排他ロックが取得されます。このように、サーバー スクリプトがリクエストを処理しており、クライアントがセッションを使用する必要があるリクエストを送信した場合、前のリクエストが処理され、ファイルの排他ロックが解除されるまで、後者のリクエストはブロックされます。ただし、これは同じクライアントからの複数のリクエストにのみ限定されます。つまり、1 つのクライアントからのリクエストが別のクライアントからのリクエストをブロックすることはありません。

スクリプトが短い場合、これは通常問題ありません。ただし、スクリプトの実行に時間がかかると、問題が発生する可能性があります。最新の Web アプリケーション開発では、AJAX テクノロジを使用して複数のリクエストを送信し、同じページ内のデータを取得することが非常に一般的です。これらのリクエストがすべてセッションの使用を必要とする場合、最初のリクエストがサーバーに到着した後にセッション ロックが取得され、他のすべてのリクエストは、相互に依存関係がない場合でも、順番に処理される必要があります。これにより、ページの応答時間が大幅に増加します。

この問題を回避する方法は、session_write_close() メソッドを呼び出して、セッションを使用した直後にセッションを閉じることです。このようにして、現在のスクリプトがまだ処理を待機している場合でも、セッション ロックは解放されます。このメソッドを呼び出した後は、現在のスクリプトはセッションをさらに操作できなくなることに注意してください。

この記事で述べられている問題と意見は、session_start() メソッドを使用した PHP のデフォルトのセッション管理モードにのみ適用されることに注意してください。たとえば、一部のユーザーは、アプリケーションが AWS EC2 でホストされ、DynamoDB が正しく構成されていれば、セッション ロックの問題は発生しないと指摘しました。

サンプルコードを添付します:

セッション.php

リーリー

以上がこの記事の全内容です。皆さんに気に入っていただければ幸いです。

www.bkjia.com本当http://www.bkjia.com/PHPjc/1037593.html技術記事同時実行の問題を引き起こす可能性がある PHP のセッションの簡単な分析 Web アプリケーションを開発するとき、多くの場合、セッションを使用してデータを保存します。しかし、PHP のことを知らない人もいるかもしれません...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!