2017-07-28 82 views
0

我有三个PHP脚本:PHP阻止其他请求 - 会话未启动

test1.php:

<?php 

sleep(3); 

test2.php:

<?php 

sleep(2); 

test3.php:

<?php 

sleep(1); 

一个简单的HTML脚本:

<html> 
<head> 
<script src="http://code.jquery.com/jquery-2.2.4.min.js" type="text/javascript"></script> 
</head> 
<body> 
<script> 
$.ajax({url: 'test1.php'}); 
$.ajax({url: 'test2.php'}); 
$.ajax({url: 'test3.php'}); 
</script> 
</body> 
</html> 

我请求通过PHP的内置Web服务器的HTML和看到以下信息: Waterfall

于是,他们互相等待。

我知道会话锁定,但没有会话启动和session.auto_start设置为Off

我错过了什么?

回答

0

听起来像您正在使用内置的开发专用网络服务器。

http://php.net/manual/en/features.commandline.webserver.php

web服务器中运行的仅一个单线程处理,因此,如果请求被阻塞PHP应用程序将停止。

+0

我看到了 - 我用PHP服务器做了一个例子,从等式中排除Apache。它也发生在我有Apache的Docker设置上。所以我决定再次尝试第三个Apache安装程序 - 并且工作。所以现在我到了我的Docker Apache安装程序无法正常工作。任何线索可能是什么? –

+0

我还没有在Docker上玩过Apache,但是我的猜测是无论你使用的图像被配置为只处理每个容器的一个并发请求,并且通过负载平衡很多这样的容器来处理更多的并发请求。 – ceejayoz