問題是我必須使用curl,有時curl請求需要很長時間,因爲超時。我將超時設置爲1秒,所以請求不應超過1秒,但服務器仍然無法處理其他PHP請求。在nginx/php-fpm配置上同時運行腳本的限制是什麼?
我的問題是有多少併發腳本(同時運行)可以處理nginx/php-fpm。我所看到的是持續1秒的一些請求使整個服務器無響應。我可以更改哪些設置以便可以同時處理更多請求?
問題是我必須使用curl,有時curl請求需要很長時間,因爲超時。我將超時設置爲1秒,所以請求不應超過1秒,但服務器仍然無法處理其他PHP請求。在nginx/php-fpm配置上同時運行腳本的限制是什麼?
我的問題是有多少併發腳本(同時運行)可以處理nginx/php-fpm。我所看到的是持續1秒的一些請求使整個服務器無響應。我可以更改哪些設置以便可以同時處理更多請求?
由於DNS,Php-curl沒有及時響應。
問題是我不得不從CDN訪問文件,但域後面的IP頻繁更改,不幸的是curl保留了DNS緩存。
因此,它會不時嘗試從無效的IP訪問文件,但他們仍然在php-curl的DNS緩存中。
我必須完全刪除php-curl並使用普通的file_get_contents(...)
請求。這完全解決了這個問題。
Multicurl確實不是解決問題的方法,但可能是異步。我不確定解決方案在調整Nginx。它會變得更好,如果你要考慮下列選項之一:
你可以抽象的捲曲與狂飲http://docs.guzzlephp.org/en/latest/並利用自己的異步調用和承諾的辦法。
您可以使用Gearmand http:/gearman.org/getting-started/這將允許您發送異步消息到遠程服務器,遠程服務器將根據您註冊到消息的腳本處理指令。 (我用這個機制對於非阻塞記錄)
無論哪種方式,您的通話將在毫秒進行,並不會阻止你的nginx的,但你的代碼將不得不改變一點點。
你可以嘗試異步捲曲http://php.net/manual/ro/function.curl-multi-init.php – Mihai
不需要多捲曲,每個php腳本只會產生一個捲曲請求。但是,如果3-4個用戶在其瀏覽器中調用腳本,並且所有請求都需要1秒才能達到超時,則服務器對其他用戶的響應不會響應。 –
我剛纔看到一些請求需要14秒,儘管超時只有1秒。現在我已經將CURLOPT_CONNECTTIMEOUT和CURLOPT_TIMEOUT都設置爲1秒。我想知道這會花費14秒。 –