当使用curl_multi_exec操作时,需要获取返回的错误信息时,通过curl_errno会发现结果始终为0...

本文解决使用CURL_MULTI_EXEC操作时通过curl_errno获取错误信息始终为0的问题,提供了一种从完成线程结果中获取errno的方法。虽然这种方法无法获取具体的error_msg,但至少能判断是否有错误发生。
当使用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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/310974/viewspace-1054668/

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值