obviously it's a memory leak. The following program should always print the
same offset (last print before __halt_compiler() )
after few calls result become different.
<?php
header("Content-type: text/plain");
print "posix_getpid ".posix_getpid()."\n";
if (!defined('__COMPILER_HALT_OFFSET__'))
{
print "not defined\n";
$COMPILER_HALT_OFFSET=00000000;
if ($COMPILER_HALT_OFFSET==0)
{
$fh = fopen(__FILE__, 'r+');
$ok=0;
$offset_file=-1;
while(!$ok && ($line = fgets($fh)))
{
if ($offset_file<0 &&
preg_match("/^.*COMPILER_HALT_OFFSET=(00000000)/",$line,$matches,PREG_OFFSET_CAPTURE))
{
$offset_file=$pos+$matches[1][1];
}
if
(preg_match("/^.*(__halt_compiler\(\);)/",$line,$matches,PREG_OFFSET_CAPTURE))
{
$COMPILER_HALT_OFFSET=$pos+$matches[1][1]+18;
$ok=1;
}
$pos=ftell($fh);
}
if (!$ok)
{
die("PHP 5.3 with fastcgi bug could not be corrected");
}
$computed_offset=sprintf("%08d",$COMPILER_HALT_OFFSET);
print "computed_offset:".$computed_offset."\n";
fseek($fh,$offset_file);
fwrite($fh,sprintf("%08d",$COMPILER_HALT_OFFSET));
fclose($fh);
}
}
else
$COMPILER_HALT_OFFSET=__COMPILER_HALT_OFFSET__;
print "offset:".$COMPILER_HALT_OFFSET."==\n";
__halt_compiler();abcd
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]