2017-07-28 53 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