我正在從一個以未知間隔抽取數據的套接字獲取數據。幾分鐘(甚至幾小時)可能沒有任何東西,然後成千上萬的行可以排隊等待閱讀。PHP - 限制套接字連接期限
因爲我不知道該期待什麼,所以我希望能夠在無論在服務器端排隊多少的情況下,儘可能多地建立連接2-5秒的東西。
這是我目前所擁有的。
<?php
set_time_limit(2);
ini_set('max_input_time', 2);
$timeout = 3;
$host = 'data.host.com';
$port = 6543;
$fp = fsockopen($host, $port, $errno, $errstr, $timeout);
stream_set_timeout($fp, 2);
if(!$fp){
echo "Connection to '$host' failed.\n$errstr ($errno)\n";
exit;
}
while(!feof($fp)){
$xml = trim(fgets($fp));
if(empty($xml)) continue;
echo "XML=$xml\n";
}
echo "DONE\n";
function shutdown(){
echo "SHUTDOWN!\n";
}
register_shutdown_function('shutdown');
但是,這永遠不會完成。 while循環看起來像人們可能期望的那樣無限(不在上下文中)。我如何放入並捕獲一些退出/中斷/殺死?