[英]Php handling of unresponsive curl
我有一個 php 腳本,它使用 curl 從外部站點獲取數據,然后在三分鍾后重新加載自身,獲取新數據並顯示更新。 它工作正常,但如果出現網絡故障,我認為是 curl 沒有得到響應,php 只是掛起而不返回錯誤或任何東西。 然后需要手動終止這些掛起的進程。
我該如何處理這種情況? 調整卷曲選項? 修改它監視無響應卷曲的 php 腳本? 或者處理從瀏覽器到 ajax 的所有內容,包括觸發殺死掛起的 php 進程的腳本?
解決方案:我已經添加
curl_setopt($ch, CURLOPT_FAILONERROR = true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
到我的 curl 並將這些錯誤的捕獲添加到我的響應檢查部分。 從概念上講,這就是所需要的,CURLOPT_CONNECTTIMEOUT 似乎沒有必要,因為我已經設置了重新加載以防出錯。
它適用於手動斷開連接,但我還沒有看到腳本如何處理現實生活中的網絡故障。 應該沒問題。
要處理網絡問題,請使用CURLOPT_CONNECTTIMEOUT
選項來定義一些秒。 它將等待給定的秒數以連接到目標主機。
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
並使用CURLOPT_TIMEOUT
選項來定義允許卷曲進行特定操作的秒數。 如果目標服務器不釋放連接,這將很有幫助。
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.