2 つの同一の PHP リクエストが同時に実行されるのを何かが妨げているようです。これが私のブラウザなのか、Apache なのか、PHP なのか、よくわかりません。Firefox と Chrome (比較的最近のバージョン) の両方でテストしました。Apache/2.2.22 (apache2-mpm-prefork) および PHP 5.4.9-4ubuntu2 (libapache2-mod-php5) を使用します。
私は最初、この問題はセッション関連であると想定し、session_write_close()
セッションの自動開始を使用していないにもかかわらず、 を呼び出してみましたが、役に立ちませんでした。また、Chrome の開発者ツールを使用して /var/lib/php5 をチェックインしましたが、作成中のセッションに関連するものは何も見つかりませんでした。
この問題で午後中ずっと頭を悩ませていましたが、関連する質問が見つかりません。
テスト ケースを 1 つの PHP スクリプト (以下) に簡略化しました。
<?php
if (isset($_GET['frame'])) {
echo 'Hello world at '. time(). '<br>URI: '. $_SERVER['REQUEST_URI'];
sleep(2);
exit;
}
?><!DOCTYPE html>
<html>
<body>
<div style="background-color: #eee;">
<p>If the two times below are different by around 2 seconds (or more), stuff is broken (or not working as I expected).</p>
<iframe src="<?=$_SERVER['REQUEST_URI'];?>?frame"></iframe>
<iframe src="<?=$_SERVER['REQUEST_URI'];?>?frame"></iframe>
</div>
<hr>
<div style="background-color: #eee;">
<p>The two iframes below are doing the same thing as the two iframes above, except they have an additional query string parameter, this seems to prevent the scripts from blocking.</p>
<iframe src="<?=$_SERVER['REQUEST_URI'];?>?frame&1"></iframe>
<iframe src="<?=$_SERVER['REQUEST_URI'];?>?frame&2"></iframe>
</div>
</body>
</html>
乾杯、デビッド
編集: これは PHP に関連しているとは思いません。CGI スクリプトを使用してこの問題を再現することもできました。