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