Modern browsers have a “feature” where if a page takes too long to send anything (headers / body) it times out. I can’t find a way to stop this on the frontend, but it’s annoying for debugging old, slow, half-broken scripts designed for IE7 (in PHP 5.4/Apache, where I am at the moment).
I’m currently sending a simple header and some trivial content, hoping that it’ll get to a point where it crashes without closing the connection, timing out, or giving net::ERR_INCOMPLETE_CHUNKED_ENCODING.
header('Content-Type: text/plain'); ob_flush(); echo ob_get_level(); flush();
This is classic “throw things at a wall to see what sticks” code. However, even minor changes to this have broken: without the first
ob_flush, I get a white screen; with
echo 0; instead of
echo ob_get_level(); I get an error in the chunked encoding.
Eventually I get something like:
0<br /> <b>Fatal error</b>: Allowed memory size of 134217728 bytes exhausted (tried to allocate 32 bytes) in <b>/var/www/html/update_database.php</b> on line <b>94</b><br />
and aha! The script was trying to read the entire database into memory!