php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Doc Bug #25304 Implicit flush output in CLI falsely documented
Submitted: 2003-08-28 15:49 UTC Modified: 2004-02-26 11:52 UTC
Votes:1
Avg. Score:4.0 ± 0.0
Reproduced:1 of 1 (100.0%)
Same Version:0 (0.0%)
Same OS:1 (100.0%)
From: eru@php.net Assigned:
Status: Closed Package: Documentation problem
PHP Version: 4CVS-2003-08-28 (stable) OS: Linux RH 8.0
Private report: No CVE-ID: None
View Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
If you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: eru@php.net
New email:
PHP Version: OS:

 

 [2003-08-28 15:49 UTC] eru@php.net
Description:
------------
From http://de.php.net/manual/en/features.commandline.php:

"It is desired that any output coming from print(), echo() and friends is immediately written to the output and not cached in any buffer. You still can use output buffering  if you want to defer or manipulate standard output."

Right, that's exactly what you expect, when using CLI, but this only works as long, as you don't have a php.ini, where output_buffering is enabled. The unfortunate thing is only, you can't change it in your script, because it's not PHP_INI_USER. The only way out, is either creating a php.ini for CLI only, which hardly every installation has, by declaring -n in your commandline, which isn't desirable either, when you rely on certain settings in php.ini or by passing a -d output_buffering=0 on the commandline, but I wasn't able to achieve this in a #!/usr/local/bin/php line at the top of the script.

So, what we have here in my opinion is a contradictory situation, because implicit_flush = 1 is overruled by outbut_buffering = 4096.


Reproduce code:
---------------
<?php
var_dump(ini_get("implicit_flush"));
sleep(2);
?>


Expected result:
----------------
string(1) "1"
<2 seconds of waiting>

Actual result:
--------------
<2 seconds of waiting>
string(1) "1"


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2003-09-08 15:48 UTC] iliaa@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

To avoid this problem use php-cli.ini with settings specific to CLI.
 [2003-09-08 18:50 UTC] eru@php.net
Ok, then this is an error in the documentation.
The quoted paragraph should get removed alltogether, as it is plain wrong.
 [2003-11-02 09:29 UTC] betz@php.net
php -r 'var_dump(ini_get("implicit_flush")); echo "test\n"; while 
(1);' 
 
doesn't output anything, even as implicit_flush is set to 1 in 
php-cli.ini. 
It seems only -n switch solves the problem, providing a php.ini 
with cli specific settings doesn't solve the flush prob.  
 
Is this the desired behaviour?  
(testing with 4.3.2, RH8) 
 
 [2004-02-26 11:52 UTC] nlopess@php.net
This was a PHP problem.
It was already solved (at least in PHP 5).

Closing...
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sun Oct 06 02:01:27 2024 UTC