所以,基本上我需要获得大约100-200个网页的内容。我想使用curl_multi_ *以便我可以一次抓住它,但我不确定这是否可能。
我知道curl,你只需将returntransfer选项设置为true并输出执行,但是我如何使用curl_multi _ *?
如果不可能,还有其他办法吗?
答案 0 :(得分:4)
$mh = curl_multi_init();
$requests = array();
foreach ($someArray as $identifier => $url) {
$requests[$identifier] = curl_init($url);
curl_setopt($requests[$identifier], CURLOPT_RETURNTRANSFER, true);
//any other options you need to set go here
curl_multi_add_handle($mh, $requests[$identifier]);
}
我还假设您运行了请求:
do {
$status = curl_multi_exec($mh, $running);
} while ($status === CURLM_CALL_MULTI_PERFORM || $running);
最后,我们得到你问题的答案:
$returned = array();
foreach ($requests as $identifier => $request) {
$returned[$identifier] = curl_multi_getcontent($request);
curl_multi_remove_handle($mh, $request); //assuming we're being responsible about our resource management
curl_close($request); //being responsible again. THIS MUST GO AFTER curl_multi_getcontent();
}
$returned
现在包含您的所有数据。
答案 1 :(得分:-1)
使用curl multi interface很容易。
curl_multi接口提供了一种分组功能。
您可以通过简单的界面启动正常的卷曲操作,注册到多个手柄,一次执行多个作业,就是这样。
如果您使用的是PHP,请查看This页面(使用'curl multiple'搜索)。