只是好奇如果curl_multi_exec()
PHP中的调用分为阻塞调用和非阻塞调用。
简短回答 : curl_multi_exec()
is 非阻塞
更长的答案 : curl_multi_exec()
is 非阻塞, but 可以通过组合来进行阻止curl_multi_select
,它会阻塞,直到任何curl_multi连接上有活动为止。
Edit:目前我正在开发一个爬虫,这是我使用的一段代码的概要。
do {
$mrc = curl_multi_exec($mh, $active);
if($to_db_queue->count()>0){
while($to_db_queue->count()>0)
//dequeue from queue and insert into database
}
else
curl_multi_select($mh); //block till state change
} while ($active > 0);
这段代码将创建一个curl_multi_exec
然后将继续其排队的数据库工作$to_db_queue
,否则如果队列中没有任何内容curl_multi_select
将被调用来阻止循环,直到curl_multi连接中发生状态变化。
希望这能帮助您理解这个概念。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)