使用feof
或fgets
脚本将继续运行,直到 1 分钟最大执行标记。
my $socket = new IO::Socket::INET(
LocalPort => '5000',
Proto => 'tcp',
Listen => 5,
ReuseAddr => 1,
);
my $connection = $socket->accept();
$connection->send("\0"); # makes PHP send the contents
my $data = <$connection>;
if($data != "1234") {
$connection->send("not accepted");
} else {
$connection->send("accepted");
}
$connection->close();
PHP在 60 秒过后才会发送内容。使用时,它将几乎立即fread
传递数据(但只会返回)。\0
$socket = fsockopen('tcp://192.168.56.101', 5000); // virtualbox IP
fwrite($socket, '1234');
echo fread($socket, 128);
fclose($socket);
上面的脚本几乎会立即执行,但只会 get \0
。
while(!feof($socket)) {
echo fread($socket, 128);
}
在执行 60 秒之前,使用上述脚本不会发送任何数据。
问题
如何在没有 60 秒执行超时的情况下让 PHP 发送数据并从 perl 套接字检索所有数据?