当使用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对照.不过总比不知道对错要好.
原来以为是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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/310974/viewspace-1054668/
本文解决使用CURL_MULTI_EXEC操作时通过curl_errno获取错误信息始终为0的问题,提供了一种从完成线程结果中获取errno的方法。虽然这种方法无法获取具体的error_msg,但至少能判断是否有错误发生。
1069

被折叠的 条评论
为什么被折叠?



