php – 如何判断curl_multi_exec何时完成_sending_ data
发布时间:2020-12-13 22:45:42 所属栏目:PHP教程 来源:网络整理
导读:我需要从 PHP脚本调用web服务. Web服务很慢,我对它的响应不感兴趣,我只想向它发送数据. 我正在尝试使用curl_multi_exec(以下示例:http://www.jaisenmathai.com/articles/php-curl-asynchronous.html),它的第二个参数($still_running)让您知道它何时完成发送
我需要从
PHP脚本调用web服务. Web服务很慢,我对它的响应不感兴趣,我只想向它发送数据.
我正在尝试使用curl_multi_exec(以下示例:http://www.jaisenmathai.com/articles/php-curl-asynchronous.html),它的第二个参数($still_running)让您知道它何时完成发送和接收.但是,再次,我只想知道我的脚本何时完成发送.当然,如果我在完成发送数据之前退出脚本,则Web服务永远不会注册接收请求. 另一种看待它的方法是检测PHP何时空闲,等待服务器的响应. 我想要实现的是这个对话: > PHP:嗨,请保存这些数据 解决方法
你可以试试
$url = "http://localhost/server.php"; $nodes = array(); $nodes["A"] = array("data" => mt_rand()); <-------- Random Data $nodes["B"] = array("data" => mt_rand()); $nodes["C"] = array("data" => mt_rand()); $nodes["D"] = array("data" => mt_rand()); echo "<pre>"; $mh = curl_multi_init(); $curl_array = array(); foreach ( $nodes as $i => $data ) { $curl_array[$i] = curl_init($url); curl_setopt($curl_array[$i],CURLOPT_RETURNTRANSFER,true); curl_setopt($curl_array[$i],CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)'); curl_setopt($curl_array[$i],CURLOPT_POST,CURLOPT_POSTFIELDS,$data); curl_setopt($curl_array[$i],CURLOPT_CONNECTTIMEOUT,5); curl_setopt($curl_array[$i],CURLOPT_TIMEOUT,15); curl_multi_add_handle($mh,$curl_array[$i]); echo "Please save this data No : $i ",$data['data'],PHP_EOL; } echo PHP_EOL,PHP_EOL; $running = NULL; do { usleep(10000); curl_multi_exec($mh,$running); } while ( $running > 0 ); $res = array(); foreach ( $nodes as $i => $url ) { $curlErrorCode = curl_errno($curl_array[$i]); if ($curlErrorCode === 0) { $info = curl_getinfo($curl_array[$i]); if ($info['http_code'] == 200) { <------- Connection OK echo "Cya! (off to do something more important No : $i Done",PHP_EOL; echo curl_multi_getcontent($curl_array[$i]),PHP_EOL ; } } curl_multi_remove_handle($mh,$curl_array[$i]); curl_close($curl_array[$i]); } curl_multi_close($mh); 产量 Please save this data No : A 1130087324 Please save this data No : B 1780371600 Please save this data No : C 764866719 Please save this data No : D 2042666801 Cya! (off to do something more important No : A Done Ok,Im done processing,here is your response... {"data":"1130087324"} PHP? Where did you go? I feel used :( 113 Cya! (off to do something more important No : B Done Ok,here is your response... {"data":"1780371600"} PHP? Where did you go? I feel used :( 113 Cya! (off to do something more important No : C Done Ok,here is your response... {"data":"764866719"} PHP? Where did you go? I feel used :( 112 Cya! (off to do something more important No : D Done Ok,here is your response... {"data":"2042666801"} PHP? Where did you go? I feel used :( 113 简单的测试服务器server.php echo printf("Ok,here is your response... nt%s PHP? Where did you go? ntI feel used :(n",json_encode($_REQUEST)); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |