如果PHP中的curl_multi_exec()
调用是阻塞或非阻塞调用,那只是好奇。
答案 0 :(得分:6)
拍摄答案:curl_multi_exec()
非阻止
更长的答案:curl_multi_exec()
非阻止,但可以使用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连接中。
更多例子:
non-blocking
blocking
希望这有助于您理解这个概念。