PHP cURL 超時設定 CURLOPT_CONNECTTIMEOUT 和 CURLOPT_TIMEOUT 的區別
阿新 • • 發佈:2019-02-20
PHP cURL 的超時設定有兩個 CURLOPT_CONNECTTIMEOUT 和 CURLOPT_TIMEOUT,他們的區別是:
- CURLOPT_CONNECTTIMEOUT 用來告訴 PHP 在成功連線伺服器前等待多久(連線成功之後就會開始緩衝輸出),這個引數是為了應對目標伺服器的過載,下線,或者崩潰等可能狀況。
- CURLOPT_TIMEOUT 用來告訴成功 PHP 從伺服器接收緩衝完成前需要等待多長時間,如果目標是個巨大的檔案,生成內容速度過慢或者鏈路速度過慢,這個引數就會很有用。
- PS 爬去的時候只加了CURLOPT_CONNECTTIMEOUT 經常會卡死
使用 cURL 下載 MP3 檔案是一個對開發人員來說不錯的例子,CURLOPT_CONNECTTIMEOUT 可以設定為10秒,標識如果伺服器10秒內沒有響應,指令碼就會斷開連線,CURLOPT_TIMEOUT 可以設定為100秒,如果MP3檔案100秒內沒有下載完成,指令碼將會斷開連線。
需要注意的是:CURLOPT_TIMEOUT 預設為0,意思是永遠不會斷開連結。所以不設定的話,可能因為連結太慢,會把 HTTP 資源用完。
在 WordPress 中,wp_http 類,這兩個值是一樣的,預設是設定為 5 秒。