2012-10-18 36 views
5

下面是一些示例代碼:什麼是在PHP中的流讀取超時的規範方式?

<?php 
$fp = fsockopen($host, $port, $errno, $errstr, $connectTimeout); 

if (!$fp) { 
    echo "$errstr ($errno)<br />\n"; 
} else { 
    echo "connected\n"; 
    while (!feof($fp)) { 
     echo fgets($fp, 128); 
    } 
    fclose($fp); 
} 

我見過 stream_set_timeout($fp, 5);
socket_set_option($fp, SOL_SOCKET, SO_RCVTIMEO, array("sec"=>5, "usec"=>0));, 但讀永不超時。

我見過的PHP文檔的幾個注意事項爲stream_set_timeout()

此功能不具有先進的操作,如 stream_socket_recvfrom(),使用stream_select()的超時參數工作,而不是。

我寧可不使用select()或一個循環。什麼是使用超時阻止讀取的規範方法?

回答

2

socket_set_option是與socket_create創建的套接字。

stream_set_timeout適用於流,如fopenfsockopen創建的流。

Php docs包含關於如何使用fsockopen的示例代碼。

+0

謝謝。正如我在問題中所說的,我正在使用'fsockopen',但'stream_set_timeout($ fp,5);'不起作用。 – Andy

相關問題