2017-07-28 167 views
0

我有以下代碼:PHP請求掛起

$client = new GuzzleHttp\Client(
    array(
     'base_uri' => 'https://somesite.com' 
    ) 
); 

$response = $client->request('POST', '/api', [ 
     'form_params' => array(
     'action' => 'getusers', 
     'api_key' => $_POST['key'], 
     'id'  => $_POST['id'] 
    ) 
]); 

當多個用戶訪問與上述下面的代碼相同的頁面,其他用戶等待加載之前完成第一或最近請求其請求。

我沒有使用任何session

我有標籤curl,因爲guzzle是建立在它上面的。也許這跟它有關係?

針對此問題的任何解決方法?

使用xhr不會修復它,因爲我要求的API網站不接受其他來源。

+0

不要以爲一個請求應該導致其他請求掛起,除非(a)你已經吃掉了所有的服務器資源,或者(b)你正在處理某種過程限制。我相信這將由nginx或apache或php-fpm控制。你在用哪個?如果Apache,也許看[MaxClients](https://stackoverflow.com/a/1430890/65387)設置。 – mpen

+0

嗨,即時通訊與php-fpm使用nginx。不,我不認爲我的服務器耗盡資源,因爲沒有人使用它,除了我和我的其他電腦。我找不到任何'MaxClient'設置,但我找到的關閉是'worker_connections',我已經將'worker_connections'設置爲'1024'。 –

+0

我回復我早期發佈的內容不正確,我認爲它工作,但一分鐘後它開始阻止其他請求。 –

回答

1

如果您使用的是PHP FPM,請檢查可用的PHP進程。它有一個狀態頁面(設置爲described there)以獲取此信息。

如果所有員工都很忙,那麼客戶的請求就會等待。您需要增加工作人員的數量,以便能夠一次處理更多請求。

+0

我已將工人設置爲1024,並將工作線程設置爲12. –

+0

我的意思是['process.max'](http://php.net/manual/en/install.fpm.configuration.php#process-max)in PHP-FPM配置('/ etc/php/7.0/fpm/pools/www.conf'或其他,取決於你的系統)。 –