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 を疑ってはいけません