问题标签 [curl-multi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4596 浏览

php - 如何知道 curl_multi_exec 中哪个 URL 失败?

我编写了一个类来更轻松地使用多 cURL 请求,当我收到 404 错误或任何其他错误时,我想记录错误。我已经CURLOPT_FAILONERROR设置为true。

我目前正在使用curl_multi_info_read().

这是我的代码:

错误的结果是这样的数组:

那么如何获取发生错误的 URL 呢?这只会给我句柄资源 ID

并提前感谢。

0 投票
3 回答
2231 浏览

php - PHP cURL 在 10 个请求后设置延迟

我正在使用 PHP 和 cURL 来抓取单个网站页面的 html。通过实验,我发现我的代码仅在我指定 10 个或更少的 URL 时才有效$nodes array(参见代码示例)。我需要一次抓取大约 100 页并将源代码保存到文件中。这可以使用 cURLS 内置函数之一来完成吗?

这是我目前正在使用的代码:

提前致谢

0 投票
2 回答
4168 浏览

php - 使用 PHP 解析来自 WSDL 的响应

如果我写错了标题,我很抱歉,我不熟悉 SOAP 响应和它的类型。但我想这是一个 WSDL 响应,至少我是从 WSDL 链接得到的......

我有以下网址 http://somedomain.com/j.svc?wsdl

在我使用 curl_multi 发出请求后,我得到了以下响应。响应缩短为两个结果,因此更易于阅读

响应如下:

有没有机会使用 PHP 解析结果?我进行了很多搜索,包括 StackOverflow 以及我设法找到的内容。

要解析上述响应,我可以使用以下代码:

似乎上面的 PHP 代码部分是正确的。我得到了正确数量的“Journey”,但 $item 本身是空的。

有什么解决办法吗?请不要建议使用 SoapClient 来检索结果。我无法从 curl_multi 移动。我已经有了结果,我需要解析它。先感谢您

0 投票
0 回答
605 浏览

php - PHP & curl_multi 和 CURLOPT_FILE = 没有文件内容

当使用 CURLOPT_FILE(将内容发送到文件)并行(使用 curl_mult_exec)处理调用时,当内容很小(不确定确切大小,但在本例中为 100 - 300 字节)时,文件内容始终为 0。

通话结束后,我必须在文件上调用 fclose() 才能写入内容。

使用普通 curl_exec 内容被正确写入。我在 ubuntu 上使用 PHP 5.3.10。

这是一个错误,预期的行为吗?我在网上找不到与此相关的任何内容

0 投票
1 回答
986 浏览

php - 为网络爬虫优化 PHP CURL

我正在尝试使用 curl 编写基于 PHP 的爬虫。我有 20,000-30,000 个我必须抓取的 URL 的数据库。每次调用 curl 来获取网页大约需要 4-5 秒。

如何优化这一点并减少获取页面所需的时间?

0 投票
0 回答
728 浏览

php - curl_multi_exec - 完成后停止所有调用

成功完成后,是否可以取消 curl_multi 中的所有正在运行的调用?似乎 curl_multi 等到所有进程都完成后才完成脚本,但这可能是我自己的看法。我正在尝试调用具有许多打开连接的单个 URL。URL 将尽可能快地处理请求,当第一个请求返回时,我想关闭剩余的连接并继续调用脚本的其余部分。

0 投票
1 回答
2651 浏览

php - PHP: How to kill off any pending curl_multi requests in RollingCurl library

I am using a slightly modified version of http://code.google.com/p/rolling-curl/

My question is similar to this: http://code.google.com/p/rolling-curl/issues/detail?id=25

Basically, I am doing a bunch of requests, once I find the one I want, all other pending requests should be terminated from the queue and any running CURL handles should be removed from memory, even if they aren't done downloading yet.

Code here:

Edit: On second thought, there should be 2 functions:

1) Delete any requests in the queue and unset any curl resources from memory without finishing.

2) Delete any requests in queue and while until all curl resources are finished.

I will probably contribute the functions/code/suggestions I get here into the project with credit to author of the selected answer.

0 投票
1 回答
2673 浏览

php - 获取 cUrl 以抢先发送授权标头以在 PHP 中进行 DIGEST 身份验证

我们有一个 PHP 页面(实际上是一个 WordPress 插件),它通过 DIGEST 身份验证调用 REST API。curl 句柄是基于每个请求创建的,给定授权凭据并成功进行身份验证。

问题:

在后台,Curl 发送了两个请求。第一个以 401 和挑战失败,第二个包含 Authorization 标头并成功(200)

在随后的 API 调用中,cUrl 继续发送两个请求。这似乎效率低下,导致操作持续时间增加了 2 倍的网络延迟。

我们如何使 cURL “先发制人地验证”(例如)未来的请求?

Curl Multi 有这个功能吗?

0 投票
1 回答
1916 浏览

php - 多个且不断增长的出站 CURL 请求

多出站请求 - 卷曲

这是问题所在,我有几个客户端必须 CURL 出站请求。例如,我目前有 20 个客户,我每分钟向他们每个人发送大约 100~1000 个请求。我也使用 CURL multi 但是它似乎对一次可以发出多少个请求有限制,而且它还取决于整个例程完成的最长 CURL 响应。

例如,我有以下客户:

... 等等

这里的主要问题是我有一个脚本可以为每个客户完成这项工作。说,

... 等等

我将它们分开的原因是因为客户端之间应该有专门的连接,并且它们的延迟彼此不同。一些客户端响应速度更快并且拥有更快的服务器,而一些客户端的服务器速度较慢或需要更多的跃点才能到达。

这是我的问题:有没有办法简化这个过程?因为每次我必须将客户端添加到我的数据库时,我也必须添加

到 cronjobs 列表。是否可以将它放在一个脚本中,以便随着我的客户端列表的增长它不会影响我拥有的出站 CURL 功能的整体性能?

顺便说一句,我正在使用 PHP,CURL。如果有解决方案建议为此使用 PHP 以外的其他技术,Linux 队列管理器...等,欢迎您提出建议。

谢谢!

0 投票
1 回答
1368 浏览

php - curl_multi_exec() 是阻塞调用吗?

只是好奇curl_multi_exec()PHP中的调用是阻塞调用还是非阻塞调用。