Ben abonelerin listesinin, bir PDF eki ile bir foreach döngü içinde tek bir seferde, e-posta gönderen bir cron işi var. Ben cron komut bu mesajı aldım:
Fatal error: Allowed memory size of 94371840 bytes exhausted (tried to allocate 78643193 bytes)
Ben bu hatayı önlemek için ne yapmak gerekiyor?
Ayrıca, ben tüm abonelere göndererek bitirmek vermedi eminim, bu yüzden nasıl herkese göndermek olmasaydı bu yüzden tekrar almak için nerede bilen bu takip gerekir?
Updater: Burada bir kod örneği var: (Ben arada Zend Framework kullanıyorum)
public function send(Default_Model_MyEmail $myEmail)
{
if (null != ($id = $myEmail->attachmentId)) {
$file = new Default_Model_File();
$file->find($id);
$filepath = APPLICATION_UPLOADS_DIR . '/' . $file->getActualFilename();
$attachment = new Zend_Mime_Part(file_get_contents($filepath));
$attachment->type = $file->getMimeType();
$attachment->disposition = Zend_Mime::DISPOSITION_ATTACHMENT;
$attachment->encoding = Zend_Mime::ENCODING_BASE64;
$attachment->filename = $file->getDisplayFilename();
}
$transport = new Zend_Mail_Transport_Smtp('localhost');
$mail = new Zend_Mail('utf-8');
$mail->setFrom('from@address', 'From Name');
$mail->setReplyTo('replyto@address');
$mail->setSubject($myEmail->subject);
if (isset($attachment)) {
$mail->addAttachment($attachment);
}
$subscribers = $this->getSubscribers();
foreach ($subscribers as $subscriber) {
$mail->addTo($subscriber->email);
$bodyText = $myEmail->body
. "\r\n\r\nIf for any reason you would like to be removed from this mailing list, "
. "please visit \r\nhttp://myapp.com/myemail/unsubscribe/email/"
. $subscriber->email;
$mail->setBodyText($bodyText);
$mail->send($transport);
$mail->clearRecipients();
}
}
Update: I $transport
değişkeni yeniden duyuyorum. Ben bu birden abonelerine göndermek için doğru bir yol olduğunu izlenim altında oldu, ama belki bu nedeni nedir? Sen ne düşünüyorsun?
Update: I bellek kullanımı tabloları yazdırmak günlük tabloların bir sürü ekledim, ama ben gerçekten şimdi ne yapacağımı bilmiyorum. Bellek kullanımı her e-posta ile artar. 200 abone liste ile, 160 alır daha sonra bellek çalışır. Ben ne yapmalıyım?