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
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: mat at genevus dot com
New email:
PHP Version: OS:

 

 [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

Pull Requests

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-2025 The PHP Group
All rights reserved.
Last updated: Wed Jan 15 12:01:29 2025 UTC