1
我們編寫了一個php/ajax應用程序,該應用程序通過cURL連接到API。我們建立它保持連接不確定,它運行良好,我們很高興,定期使用它,然後轉移到其他項目。儘管設置爲不確定,cURL連接仍會丟失
我們最近重新訪問了它,發現它已經開始以不同的時間間隔超時。我們檢查了腳本尋找可能影響cURL調用的任何內容。沒有。
我們有,並且有,在我們的簡單腳本捲曲這些選項:
$sch = curl_init();
curl_setopt($sch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($sch, CURLOPT_URL, $test_url);
curl_setopt($sch, CURLOPT_WRITEFUNCTION, 'get_data');
curl_setopt($sch, CURLOPT_NOSIGNAL, 1);
curl_setopt($sch, CURLOPT_TIMEOUT,0);
$output = curl_exec($sch);
我的理解是,NOSIGNAL和超時選項的作用是什麼讓我們的連接打開。
但它不工作。
我有兩個問題。
1)關於編碼的任何想法,cURL中缺少的任何內容,或者代碼中可能會影響連接的其他位置?什麼會影響連接?
2)如果問題不在編碼中,我們如何檢查上游連接。如何檢測連接實際上被丟棄的位置以及爲什麼?
謝謝您的建議,如果您有任何問題或需要其他信息,請不要猶豫,發佈。
感謝
山姆
謝謝羅斯 - 我們在腳本中沒有connecttimeout,因爲連接沒有問題。問題是保持聯繫。但是我沒有將它插入到我們的腳本中,並且它在30-120秒後仍然斷開連接。我們也有腳本來檢查curl_error。我們感謝您的回答。 – user1715546
它發生在所有的網址上,還是隻發生在某些網址上?什麼是CURL的確切錯誤信息? –
您無意中指出我們正確的方向,我們不再相信cURL有失敗。在試圖打印curl_errors時,我評論說'curl_setopt($ sch,CURLOPT_WRITEFUNCTION,'get_data');'以防止它在執行curl_exec時運行。 CURL連接並保持連接。我們很快就責怪cURL,我們錯了。感謝您對羅斯的幫助,對於我在這件事上沒有盡到盡職調查表示歉意。 – user1715546