|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2005-03-06 20:53 UTC] sniper@php.net
[2005-03-19 01:00 UTC] php-bugs at lists dot php dot net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Thu Nov 06 00:00:02 2025 UTC |
Description: ------------ PHP version: 5.0.0, CVS(2004-08-06 06:30) PHP5 configuration: '--with-apxs2' and '--mbstring' (when 'output_handler=mb_output_handler') php.ini: specify 'output_handler=ob_gzhandler' or 'output_handler=mb_output_handler' Apache version: 2.0.50 OS and compiler: Linux(debian)+gcc-3.3.4, Solaris8+gcc-3.3.3 In above configuration, php(cli version) does not flush tail of stdout when output to pipe(|). point: 1. PHP is cli version (not apache2handler, but it is configurated with '--with-apxs2'.) 2. Only when 'output_handler' is specified in php.ini. No effect ob_start()/ob_end_*() in PHP script. 3. Only when Unix pipe(|) output. Normal output is correct. solution: call flush() at the exit point of script. Reproduce code: --------------- ----test.php---- <?php $dat="01234567890123456789012345678901234567890123456789\n"; for( $l = 0; $l < 100; ++$l ){ print sprintf( "%2d ", $l ) . $dat; } ?> ---- ./php.ini ---- use php.ini-recommended adding 'output_handler=ob_gzhandler' or 'output_handler=mb_output_handler'. ---- execute ---- ./sapi/cli/php -c ./php.ini test.php | tail -5 Expected result: ---------------- 95 01234567890123456789012345678901234567890123456789 96 01234567890123456789012345678901234567890123456789 97 01234567890123456789012345678901234567890123456789 98 01234567890123456789012345678901234567890123456789 99 01234567890123456789012345678901234567890123456789 Actual result: -------------- 67 01234567890123456789012345678901234567890123456789 68 01234567890123456789012345678901234567890123456789 69 01234567890123456789012345678901234567890123456789 70 01234567890123456789012345678901234567890123456789 71 0123456789012345678901234567890123456789012 note: not exactly same result in case of diffent OS and so on.