curl_multi_exec使用多少个线程?

3

我正在使用php中的curl_multi_exec来检查一些URL的状态。 我想对此进行基准测试,以便我知道在给定系统下,在curl开始排队之前,我可以同步检查多少处理程序。 有没有人有经验来评估能力?

谢谢,

亚当


你可以使用 netstat 命令并观察它打开的活动连接数。然后增加 URL 数量,直到你注意到 netstat 计数开始下降... - ircmaxell
是的,我考虑过这个问题,但大多数URL返回时间不到半秒钟。我会尝试一下,谢谢! - Adam Hopkinson
好的,可以在同一台服务器上(或另一个本地服务器)创建一个网站。创建一个只是休眠60秒左右的页面。然后打开大量连接到该页面。这应该足够长,让您从netstat获得有意义的输出,但仍然易于快速构建... - ircmaxell
1个回答

2
您可以从PHP源代码中看到它使用select()和非阻塞读取。因此,只使用一个进程。
请注意,如果您给select()一个文件描述符fd >= FD_SETSIZE,它将失败。FD_SETSIZE限制在编译PHP时定义。默认值似乎是256。在PHP实现中最好使用poll()。
关于正确的curl_multi_exec()用法:
curl_multi_exec()后应跟随curl_multi_select()。这将等待可用数据,而不是在忙碌的循环中检查它们。PHP手册中的示例很好。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接