只是好奇curl_multi_exec()
PHP中的调用是阻塞调用还是非阻塞调用。
问问题
1368 次
1 回答
6
射击答案:curl_multi_exec()
非阻塞
更长的答案:curl_multi_exec()
是non-blocking,但是可以使用 的组合进行阻塞curl_multi_select
,这会阻塞直到任何 curl_multi 连接上有活动。
编辑: 目前我正在研究爬虫,这是我使用的一段代码的大纲。
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 连接中发生状态更改。
希望这能帮助你理解这个概念。
于 2013-01-21T07:06:00.340 回答