php - 从 curl multi exec 中获取多个 curl 句柄的内容?

标签 php curl

所以,基本上我需要获取大约 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/

相关文章:

javascript - Jquery $.post脚本运行3次(多次INSERT)

php - Symfony 3 不会将文件转换为 UploadedFile

php - Laravel - php 如何在数据库中插入值时获取当前 Id?

php - 在ajax x-editable之后用条件更新php中的sql表

javascript - 使用 AJAX 从另一个网站获取数据

php - 如何检测假用户(爬虫)和 cURL

php - 在 codeigniter 错误的 View 中加载 css

http - CURL 从无限管道分块 POST?

linux - curl (58) 无法加载客户端证书 -8912

php - 这个 XPath 查询有什么问题?