當使用curl_multi_exec操作時,需要獲取返回的錯誤資訊時,透過curl_errno會發現結果始終為0

gavinlee發表於2011-09-01
當使用curl_multi_exec操作時,需要獲取返回的錯誤資訊時,透過curl_errno會發現結果始終為0,即沒有錯誤,即使是已出錯的狀況.
原來以為是PHP的BUG,其實不然.

解決辦法:

....
while($done = curl_multi_info_read($curl_multi)) { //獲取已完成執行緒的結果
$ch = $done['handle'];//獲取curl_init的資源物件
$errno = $done['result'];//取errno,直接使用curl_errno在multi操作中不可用,取不到錯誤,始終為0

....

詳細程式碼省略,已寫了個完整類,日後放上.
從result獲取的errno和curl_errno的值是一樣的,0是沒有錯,其他任何值都是錯誤號,只是這麼做似乎沒法知道具體error_msg,需要自己去檢視CURL的man對照.不過總比不知道對錯要好.
[@more@]當使用curl_multi_exec操作時,需要獲取返回的錯誤資訊時,透過curl_errno會發現結果始終為0,即沒有錯誤,即使是已出錯的狀況.
原來以為是PHP的BUG,其實不然.

解決辦法:

....
while($done = curl_multi_info_read($curl_multi)) { //獲取已完成執行緒的結果
$ch = $done['handle'];//獲取curl_init的資源物件
$errno = $done['result'];//取errno,直接使用curl_errno在multi操作中不可用,取不到錯誤,始終為0

....

詳細程式碼省略,已寫了個完整類,日後放上.
從result獲取的errno和curl_errno的值是一樣的,0是沒有錯,其他任何值都是錯誤號,只是這麼做似乎沒法知道具體error_msg,需要自己去檢視CURL的man對照.不過總比不知道對錯要好.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/310974/viewspace-1054668/,如需轉載,請註明出處,否則將追究法律責任。

相關文章