두 개의 동일한 PHP 요청이 동시에 실행되는 것을 막는 것으로 보입니다. 이것이 내 브라우저, Apache 또는 PHP인지 확실하지 않습니다. Firefox와 Chrome에서 모두 테스트했습니다 (비교적 최근 버전). 아파치/2.2.22 (apache2-mpm-prefork)와 PHP 5.4.9-4ubuntu2 (libapache2-mod-php5) 사용하기.PHP (또는 아파치)가 비동기 요청을 방지합니다
처음에는이 문제가 세션과 관련되어 있다고 가정하고 세션 자동 시작을 사용하지 않고 있음에도 불구하고 session_write_close()
을 호출하지 않았습니다. 또한 Chrome의 개발자 도구를 사용하고/var/lib/php5를 체크인했으며 생성되는 세션과 관련이 없습니다.
나는이 문제로 오후 내내 머리를 긁적이고 있으며 관련 질문을 찾을 수 없습니다.
나는 하나의 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 스크립트를 사용하여이 문제를 재현하기 위해 관리했습니다.