2010-11-18 62 views
2

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

感谢,

亚当

+0

您可以使用'netstat'并观察打开的活动连接数。然后增加url的数量,直到你注意到从netstat开始的计数开始下降... – ircmaxell 2010-11-18 15:14:24

+0

是的,我想过,但大多数url将会在不到半秒的时间内返回。我会试试看,谢谢! – 2010-11-18 15:18:59

+0

那么,在同一个服务器(或另一个本地)上创建一个站点。创建一个只休眠60秒左右的页面。然后打开大量的连接到该页面。这应该足够长,以便从'netstat'获得有意义的输出,但仍然可以轻松快速地构建... – ircmaxell 2010-11-18 15:21:14

回答

2

你可以从它使用选择PHP源代码()和非阻塞读看到。 所以只有一个过程被使用。

请注意,如果给它一个fd> = FD_SETSIZE的文件描述符,select()会失败。编译PHP时定义了FD_SETSIZE限制。默认情况下似乎是256.在PHP实现中使用poll()会更好。

关于正确curl_multi_exec()的用法:

curl_multi_exec()应该由curl_multi_select遵循()。这将等待可用数据,而不是在繁忙的循环中检查它们。 example in the PHP manual很好。