ホームページ  >  記事  >  バックエンド開発  >  session_start(); フロックが失敗する可能性がある

session_start(); フロックが失敗する可能性がある

WBOY
WBOYオリジナル
2016-06-13 13:13:161198ブラウズ

session_start(); は flock を失敗させますか?

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--><?php
session_start();
 
$file = "temp.txt";   
$fp = fopen($file , 'w');   
if(flock($fp , LOCK_EX | LOCK_NB)){   
    sleep(10); 
    echo 'a';
    flock($fp , LOCK_UN);   
} else{   
    echo "Lock file failed...\n";   
}   
fclose($fp); 


上記のコードは非常に単純です。 .php として保存し、2 つのウィンドウを開きます。最初に a.php を実行するものは 10 秒待機します。 2 つ目は、失敗したロック ファイルを出力しますが、session_start を追加した後です。すべてが行き詰まってしまいます。代わりに、2 番目の出力ロック ファイルがすぐに失敗しました。原理は何ですか?
現在、session_start と flock を使用する必要があります。

-----解決策---------
session_start(); の後に
echo session_id();

を追加するとスタック現象が発生するため、同じ sessionid を出力する
セッション一時ファイルをロックする必要があります。独自性のため

したがって、PHP 開発チームの IQ を疑ってはいけません

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。