php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #19584 ob_implicit_flush may not be working
Submitted: 2002-09-24 16:54 UTC Modified: 2002-09-24 18:06 UTC
From: mat at genevus dot com Assigned:
Status: Not a bug Package: Sockets related
PHP Version: 4.2.3 OS: Windows 2000 Advanced Server IIS
Private report: No CVE-ID: None
 [2002-09-24 16:54 UTC] mat at genevus dot com
I have been running a looping script using php.exe from the command-line using 4.1.2 to run tasks I pull out of a database. I needed to use socket_set_timeout but my build of 4.1.2 didn't support it.

I upgraded to 4.2.2 and my script worked, but socket_set_timeout wasn't supported in this one either.

So I upgraded to 4.2.3 and now my script doesn't even output anything. ob_implicit_flush doesn't *seem* to be working.  PHP doesn't echo anything, it just seems to be hanging in my loop.

Will be easier to explain with a code example:

set_time_limit(0);
ob_implicit_flush();

for(;;)
{
 echo "hello\n";
 sleep(10);
}

This code works just fine in 4.1.2, same for 4.2.2.  But not in 4.2.3.

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2002-09-24 17:09 UTC] mat at genevus dot com
Now I can't get it working in 4.2.2 anymore

Probably my configuration then... Always works with 4.1.2 though, so I'm not sure what to think anymore.
 [2002-09-24 17:21 UTC] sniper@php.net
Please try using this CVS snapshot:

  http://snaps.php.net/php4-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php4-win32-latest.zip

Also, make sure you really replace all the old php related files with the new ones found in the release package.
(php4ts.dll being the most important)

 [2002-09-24 17:36 UTC] edink@php.net
And try to disable output buffering in your php.ini. Maybe you have used php.ini-recommended after upgrading to 4.2.3?
 [2002-09-24 17:48 UTC] mat at genevus dot com
I downloaded the CVS snapshot and set it up.

-My php.ini is residing in c:\winnt, and when i upgraded to the latest version (4.2.3), i went line by line and made sure my php.ini wasn't missing anything from the new php.ini in 4.2.3

-My PATH environment variable has c:\php\dlls and c:\php\extensions in it, so i didn't copy anything to the winnt folders

-For each time i tried a different version, i shut down my web server, rebooted, renamed c:\php to something like c:\php_4.1.2, then renamed the version i wanted (c:\php_4.2.3) to c:\php.  Then I started up my web server

-I use the same php folder structure as the original that came out of the ZIP file except i have an added sessiondata\path\for\session\data folder and uploadtemp, which I've duplicated throughout each installation:
c:\php (currently the CVS version i downloaded)
c:\php_4.1.2
c:\php_4.2.2
c:\php_4.2.3

-I created a file c:\test.php which contains:
<?
set_time_limit(0);
ob_implicit_flush();

for(;;)
{
 echo "hello\n";
 sleep(2);
}
?>

Here are the results of running this file (in this case i didn't reboot or anything, i just ran php.exe right from the folder)

http://www.genevus.com/download/php_4.1.2.gif
http://www.genevus.com/download/php_4.2.2.gif
http://www.genevus.com/download/php_4.2.3.gif
http://www.genevus.com/download/php_cvs.gif
 [2002-09-24 17:53 UTC] mat at genevus dot com
Just tried edink's suggestion, seems to work
output_buffering = Off

Throw me into the bogus pile! =)
 [2002-09-24 18:06 UTC] edink@php.net
Your wish is our command :)
 
PHP Copyright © 2001-2020 The PHP Group
All rights reserved.
Last updated: Mon Feb 24 06:01:26 2020 UTC