Update scripts/jobs/cron_autoresponder.php
Emails used to be read for parsing, using PHP's file() command. I changed it to read the file line by line, so the script doesn't run into the PHP memory limit. Note that this has been a severe bug, since it used to make PHP abort script execution, thus possibly losing many emails for many users (i.e, on a multi domain setup with many autoresponders running).
This commit is contained in:
@@ -97,7 +97,18 @@ if($db->num_rows($result) > 0)
|
|||||||
$filemtime = $it->getMTime();
|
$filemtime = $it->getMTime();
|
||||||
if(time() - $filemtime <= $cycle)
|
if(time() - $filemtime <= $cycle)
|
||||||
{
|
{
|
||||||
$content = file($fullFilename);
|
// why not read up to k lines?
|
||||||
|
// I've been patching this forever, to avoid FATAL ERROR / memory exhausted
|
||||||
|
// (fgets() is now binary safe, too)
|
||||||
|
// $content = file($fullFilename);
|
||||||
|
$lcount = 0; $content = array(); $handle = @fopen($fullFilename, "r");
|
||||||
|
if ($handle) {
|
||||||
|
// 1023 lines of an email should be enough to analyze it
|
||||||
|
while (($count++<1023) && (($buffer = fgets($handle)) !== false)) {
|
||||||
|
$content[]=$buffer;
|
||||||
|
}
|
||||||
|
fclose($handle);
|
||||||
|
}
|
||||||
|
|
||||||
// error reading mail contents or just empty
|
// error reading mail contents or just empty
|
||||||
if(count($content) == 0)
|
if(count($content) == 0)
|
||||||
|
|||||||
Reference in New Issue
Block a user