Hi,
I'm trying to redirect output of a simple Perl script to a web browser using PHP. The Perl script sometimes take 2-3 hours to execute and show output to the screen. By this time, I guess Apache Server simply timesout and displays an error message discribed above.
Here is the sample code snipet.
# The tmpOutput.txt contains output of a Perl script.
# Read a file using an handle.
$handle = popen("tail -f tmpOutput.txt", 'r');
# Check if read handle has been allocated properly.
if ($handle) {
# to prevent the code from hanging up when the response is slow.
stream_set_blocking($handle, FALSE);
# Set the stream timeout period to 24 hours i.e. 86400 seconds.
stream_set_timeout($handle, 86400);
# Get the available stream meta data information.
$info = stream_get_meta_data($handle);
# While there's no end of file, read the file contents and redirect them to standard display.
while((!feof($handle)) && (!$info['timed_out'])) {
$buffer = fgets($handle);
echo "$buffer<br/>\n";
ob_flush();
flush();
$info = stream_get_meta_data($handle);
}
# Check if some issue while streaming data.
if ($info['timed_out']) {
echo 'Connection timed out!';
}
}
# Close the file handle.
pclose($handle);