|   | php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login | 
| 
  [2002-03-14 12:46 UTC] harry dot brueckner at orange-digital dot de
 This script causes PHP to crash (sigsegv, return nothing OR to cause wget to tell "HTTP request sent, awaiting response... End of file while parsing headers. Retrying.") almost any time. The include.txt file I used was larger than 100k and was just a simple text. The content of the file is not important at all, I tried several versions.
<?php
function getMicrotime()
  {
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
  }
function timer($buffer)
  {
    global $startTime;
    
    $endTime = getMicrotime();
    
    $diff = sprintf("%.5f", $endTime - $startTime);
    
    return $buffer . "\nExecution time: $diff sec<br>\n";
  }
$startTime = getMicrotime();
ob_start("timer");
for ($i = 0; $i < 500; $i++)
  {
    $fh = fopen("include.txt", "r");
    $cmd = fread($fh, 1048576);
    fclose($fh);
    echo "$i $cmd\n";
  }
?>
I compiled PHP with
./configure --prefix=/usr/local/php --disable-short-tags --enable-safe-mode --enable-ftp --with-mysql=/usr/local/mysql --with-zlib --enable-memory-limit
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits             | |||||||||||||||||||||||||||
|  Copyright © 2001-2025 The PHP Group All rights reserved. | Last updated: Fri Oct 31 13:00:01 2025 UTC | 
ob_start() disables chunked output by default. Your script should work if ob_start('timemer', 4096) for example. Not like output_buffering ini directive, ob_start()'s default chunk size is 0 (which means no chunked output -> you're exhousting memory)