所以,基本上我需要获取大约 100-200 个网页的内容。我想使用 curl_multi_* 以便一次获取所有内容,但我不确定这是否可行。
我知道使用 curl,您只需将 returntransfer 选项设置为 true 并输出执行,但我如何使用 curl_multi_* 执行此操作?
如果不可能,还有其他方法吗?
最佳答案
我在尝试自己做同样的事情时偶然发现了这一点。我想我会添加我的解决方案来帮助将来遇到同样问题的任何人。首先,我假设您有一组这样的 curl 处理程序:
$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
现在包含您的所有数据。
关于php - 从 curl multi exec 中获取多个 curl 句柄的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4567824/