Beste Tweakers,
In een script waarin ik een groot aantal PDF bestanden probeer te genereren en daarna te e-mailen, loop ik tegen een geheugengebruik probleem aan:
Oftewel: 16MB geheugen is er voor het script dat is opgebruikt, en het script wil nog 1MB toekennen, even grof. Het probleem ontstaat doordat er meerdere PDF's worden gegenereerd. Bij de 4e PDF ontstaat dit probleem.
De relevante code is:
Zoals je ziet heb ik al met "unset" geprobeerd alles uit het geheugen te krijgen. Ook "= NULL" heb ik geprobeerd. Het lijkt echter allemaal niet te werken. Ook met google waren dit de enige gevonden mogelijkheden.
Helaas ben ik nog niet zo sterk in classes, gebruiken oke, maar maken, nee
Het zal vast iets heel kleins en makkelijks zijn!
In een script waarin ik een groot aantal PDF bestanden probeer te genereren en daarna te e-mailen, loop ik tegen een geheugengebruik probleem aan:
code:
1
| Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 1245184 bytes) in /www/vhosts/gameforaday.com/www/dompdf/lib/class.pdf.php(2219) : eval()'d code on line 5914 |
Oftewel: 16MB geheugen is er voor het script dat is opgebruikt, en het script wil nog 1MB toekennen, even grof. Het probleem ontstaat doordat er meerdere PDF's worden gegenereerd. Bij de 4e PDF ontstaat dit probleem.
De relevante code is:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| function blaat(){ $mail = new PHPMailer(); $mail->Mailer = 'mail'; $mail->From = $set['company-email']; $mail->FromName = $set['company-name']. ' administration system'; $mail->AddAddress($to_email); $mail->AddReplyTo($set['company-email'], $set['company-name']); $mail->IsHTML(false); $mail->Subject = 'blabla'; $mail->Body = $result; // create and attach the PDF invoice. require_once("dompdf/dompdf_config.inc.php"); $dompdf = new DOMPDF(); $dompdf->load_html(generate_pdf($_GET['id'])); error_reporting(E_ERROR); // DomPDF is not very cleanly coded. $dompdf->render(); $filename = 'blabla.pdf'; $mail->AddStringAttachment($dompdf->output(), $filename); error_reporting(E_ALL); if(!$mail->Send()) { echo 'Message was NOT sent! <br>'; echo 'Mailer Error: '.$mail->ErrorInfo; } else { echo 'Message sent <br>'; } unset($mail); unset($dompdf); } |
Zoals je ziet heb ik al met "unset" geprobeerd alles uit het geheugen te krijgen. Ook "= NULL" heb ik geprobeerd. Het lijkt echter allemaal niet te werken. Ook met google waren dit de enige gevonden mogelijkheden.
Helaas ben ik nog niet zo sterk in classes, gebruiken oke, maar maken, nee
Het zal vast iets heel kleins en makkelijks zijn!