我打开多个(75)流通过
stream_socket_client()
stream_select()
代码:
foreach ($tlds as $index => $server ) {
$ip = gethostbyname($server);
$con = @stream_socket_client($ip.':43',$errno, $errstr, 10, STREAM_CLIENT_CONNECT | STREAM_CLIENT_ASYNC_CONNECT);
usleep(200);
if (!$con) {
$fails[] = $server;
} else {
$calls[$index] = $con;
stream_set_blocking($calls[$index], false);
}
//get time here
}
ââââââââââ¦âââââââââââ¦âââââââââââ
â $index â 1st call â 2nd call â
â âââââââââ¬âââââââââââ¬âââââââââââ£
â 0 â 5s â 0s â
â âââââââââ¬âââââââââââ¬âââââââââââ£
â 10 â 6s â 0s â
â âââââââââ¬âââââââââââ¬âââââââââââ£
â 20 â 7s â 0s â
â âââââââââ¬âââââââââââ¬âââââââââââ£
â 30 â 9s â 0s â
â âââââââââ¬âââââââââââ¬âââââââââââ£
â 40 â 11s â 0s â
â âââââââââ¬âââââââââââ¬âââââââââââ£
â 50 â 12s â 0s â
â âââââââââ¬âââââââââââ¬âââââââââââ£
â 60 â 13s â 0s â
â âââââââââ¬âââââââââââ¬âââââââââââ£
â 70 â 14s â 1s â
â âââââââââ¬âââââââââââ¬âââââââââââ£
â end â 14s â 1s â
ââââââââââ©âââââââââââ©âââââââââââ
我在socket编程方面一点经验都没有,所以我很乐意得到任何提示。
PHP 7.1、Apache/2.4.6(CentOS)
注意:有时第二次通话的时间仍占第一次通话时间的1/3左右。但接下来的通话时间大约是1秒甚至更短。