Thanks very much, I've added stream_set_timeout functionality, and it
seems to work very well!
For reference, here's the modified script:
============================================================
$fp = fsockopen('192.168.3.25', 10001, $errno, $errstr, 5);
if (!$fp) {
echo 'Error...';
} else {
/** Set socket timeout period */
stream_set_timeout($fp, 5);
/** KPRINT outputs scale values */
$command = "KPRINT\r\n";
fwrite($fp, $command);
while (!feof($fp)) {
/** Check for timeout */
$info = stream_get_meta_data($fp);
if ($info['timed_out']) {
echo 'Timeout...';
break;
}
$buffer = fgets($fp, 1024);
}
fclose($fp);
}
============================================================
Brad Bonkoski wrote:
Aaron Gould wrote:
I tried this earlier, but it does not seem to work... It appears to
just hang when no data is returned from the networked device. It
seems as if the loop stops, and is waiting for something.
probably blocking on the socket....
have you tried:
www.php.net/stream_set_timeout
Brad Bonkoski wrote:
I think something like this will work for you..
$start_time = time();
...loop..
if( time() - $start_time > 5 ) exit;
-B
Aaron Gould wrote:
I have a script that connects to a networked device via PHP's socket
functions. This device accepts proprietary commands (e.g.:
"KPRINT", as seen below), and returns data. However, this device
does not have any sort of "EXIT" command to end the processing of
events. So it essentially loops forever.
I do know that if this device does not return anything after 5
seconds, it will never return anything.
So, my question is: how can I force this script to stop after 5
seconds has elapsed?
Here's the script:
============================================================
$fp = fsockopen('192.168.3.25', 10001, $errno, $errstr, 5);
if (!$fp) {
echo 'Error...';
} else {
$command = "KPRINT\r\n";
fwrite($fp, $command);
while (!feof($fp)) {
$buffer = fgets($fp, 1024);
}
fclose($fp);
}
============================================================
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php