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