ID: 40897
Updated by: [EMAIL PROTECTED]
Reported By: david at acz dot org
Status: Closed
Bug Type: Filesystem function related
Operating System: Any
PHP Version: 5.2.1
Assigned To: iliaa
New Comment:
A Win32 equivalent...
for %x in (1 2) do start php -r
"ini_set('error_log','/tmp/test.log');for($i=0;$i<10000;$i++)error_log(str_repeat(%x,5000));"
This should all be on 1 line.
Previous Comments:
------------------------------------------------------------------------
[2007-04-01 19:29:48] [EMAIL PROTECTED]
This bug has been fixed in CVS.
Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
Thank you for the report, and for helping us make PHP better.
------------------------------------------------------------------------
[2007-03-26 14:17:38] david at acz dot org
O_APPEND is atomic for a single write. php_log_err uses stdio, so a
log entry longer than the stdio buffer size will cause non-atomic
writes.
Try this:
for x in A B; do php -r
'ini_set("error_log","/tmp/test.log");for($i=0;$i<10000;$i++)error_log(str_repeat("'$x'",5000));'
& done
------------------------------------------------------------------------
[2007-03-25 14:22:20] [EMAIL PROTECTED]
Append is atomic and does not require locking.
------------------------------------------------------------------------
[2007-03-22 20:39:21] david at acz dot org
Description:
------------
The internal php_log_err function does not lock the output file. This
causes long messages to get mixed together.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=40897&edit=1