微調 PHP 中的 Curl 超時
在 PHP 程式設計領域,遇到緩慢的資料庫回應可能會令人沮喪。當處理大型資料集時,這種遲緩現象變得更加明顯。為了解決這個問題,開發人員經常依賴具有延長逾時的curl請求。
考慮以下程式碼片段:
$ch = curl_init(); $headers["Content-Length"] = strlen($postString); $headers["User-Agent"] = "Curl/1.0"; curl_setopt($ch, CURLOPT_URL, $requestUrl); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERPWD, 'admin:'); curl_setopt($ch,CURLOPT_TIMEOUT,1000); $response = curl_exec($ch); curl_close($ch);
儘管指定了超時,但當curl請求過早終止時,就會出現問題。這種行為提出了該方法是否有缺陷的問題。
答案在於理解curl中可用的細微設定。 CURLOPT_CONNECTTIMEOUT 參數決定允許建立連線的持續時間,而 CURLOPT_TIMEOUT 設定curl 函數的最大執行時間。在這種情況下,問題可能源自於這些設定之間的不匹配。
要解決該問題,請如下調整代碼:
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 400); //timeout in seconds
將 CURLOPT_CONNECTTIMEOUT 設定為 0(表示無限期等待) ),我們允許連接不間斷地進行。同時,CURLOPT_TIMEOUT 設定為 400 秒,為請求完成提供了充足的時間。
請記住,延長 PHP 腳本執行時間也至關重要:
set_time_limit(0);// to infinity for example
這可以確保 PHP 腳本不會提前終止,從而允許curl 請求正常運行。
以上是如何有效微調 PHP 中的 Curl 逾時以避免請求過早終止?的詳細內容。更多資訊請關注PHP中文網其他相關文章!