PHP cURL 超時設置CURLOPT_CONNECTTIMEOUT 和CURLOPT_TIMEOUT 的區別
PHP cURL 的超時設置有兩個CURLOPT_CONNECTTIMEOUT 和CURLOPT_TIMEOUT,他們的區別是:
- CURLOPT_CONNECTTIMEOUT用來告訴PHP在成功連接服務器前等待多久(連接成功之後就會開始緩衝輸出),這個參數是為了應對目標服務器的過載,下線,或者崩潰等可能狀況。
- CURLOPT_TIMEOUT用來告訴成功PHP從服務器接收緩沖完成前需要等待多長時間,如果目標是個巨大的文件,生成內容速度過慢或者鏈路速度過慢,這個參數就會很有用。
使用cURL 下載MP3 文件是一個對開發人員來說不錯的例子,CURLOPT_CONNECTTIMEOUT 可以設置為10秒,標識如果服務器10秒內沒有響應,腳本就會斷開連接,CURLOPT_TIMEOUT 可以設置為100秒,如果MP3文件100秒內沒有下載完成,腳本將會斷開連接。
需要注意的是:CURLOPT_TIMEOUT默認為0,意思是永遠不會斷開鏈接。所以不設置的話,可能因為鏈接太慢,會把HTTP資源用完。
在WordPress 中,wp_http 類,這兩個值是一樣的,默認是設置為5 秒。