Oto niektóre przykładowy kod:Jaki jest kanoniczny sposób na ustawienie limitu czasu odczytu w strumieniu w 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);
}
Widziałem stream_set_timeout($fp, 5);
i
socket_set_option($fp, SOL_SOCKET, SO_RCVTIMEO, array("sec"=>5, "usec"=>0));
, ale odczytu czasu nigdy na zewnątrz.
Widziałem wiele wad w docs PHP dla stream_set_timeout()
:
Funkcja ta nie działa z zaawansowanych operacji jak stream_socket_recvfrom(), użyj stream_select() z parametrem zamiast limitu czasu.
Wolałbym nie używać select()
lub pętli. Jaki jest kanoniczny sposób na blokowanie odczytu z przekroczeniem limitu czasu?
Dzięki. Jak już powiedziałem w pytaniu używam 'fsockopen' ale' stream_set_timeout ($ fp, 5); 'nie działa. – Andy