note 86063 modified in function.pdf-add-textflow by danbrown

From: Date: Wed, 01 Oct 2008 16:25:42 +0000
Subject: note 86063 modified in function.pdf-add-textflow by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-144941@lists.php.net to get a copy of this message
If you get an error like this: PHP Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 3072 bytes) in /var/www/html/pdf/starter_textflow.php on line 70 It is because you are sending too much data to the "add_textflow" function. Increasing the memory in the php.ini file won't fix the problem. The solution is to try buffering the data you send to the function. For example, if this fails: <?php $text= "Lorem ipsum dolor sit amet, consectetur adi­pi­sicing elit, sed do eius­mod tempor incidi­dunt ut labore et dolore magna ali­qua. Ut enim ad minim ve­niam, quis nostrud exer­citation ull­amco la­bo­ris nisi ut ali­quip ex ea commodo con­sequat. Duis aute irure dolor in repre­henderit in voluptate velit esse cillum dolore eu fugiat nulla pari­atur. Excep­teur sint occae­cat cupi­datat non proident, sunt in culpa qui officia dese­runt mollit anim id est laborum. "; //send lots of data all at once $max=100; for($i=0;$i<$max;$i++) $text .= $text; $tf = $p->add_textflow($tf, $text, $optlist1); ?> Try something like this instead: <?php $text= "Lorem ipsum dolor sit amet, consectetur adi­pi­sicing elit, sed do eius­mod tempor incidi­dunt ut labore et dolore magna ali­qua. Ut enim ad minim ve­niam, quis nostrud exer­citation ull­amco la­bo­ris nisi ut ali­quip ex ea commodo con­sequat. Duis aute irure dolor in repre­henderit in voluptate velit esse cillum dolore eu fugiat nulla pari­atur. Excep­teur sint occae­cat cupi­datat non proident, sunt in culpa qui officia dese­runt mollit anim id est laborum. "; //send chunks of data $max=100; for($i=0;$i<$max;$i++) $tf = $p->add_textflow($tf, $text, $optlist1); ?> In the second example we send less data, but we call the function more often. With the first example, I could only generate 3 or 4 pages of a PDF; with the latter example I could generate 200+ page PDF's. This took me a while to debug; hope it saves someone else some time. :) --was-- If you get an error like this: PHP Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 3072 bytes) in /var/www/html/pdf/starter_textflow.php on line 70 It is because you are sending too much data to the "add_textflow" function. Increasing the memory in the php.ini file won't fix the problem. The solution is to try buffering the data you send to the function. For example, if this fails: ///////////////////begin code/////////////////////////////// $text= "Lorem ipsum dolor sit amet, consectetur adi&shy;pi&shy;sicing elit, sed do eius&shy;mod tempor incidi&shy;dunt ut labore et dolore magna ali&shy;qua. Ut enim ad minim ve&shy;niam, quis nostrud exer&shy;citation ull&shy;amco la&shy;bo&shy;ris nisi ut ali&shy;quip ex ea commodo con&shy;sequat. Duis aute irure dolor in repre&shy;henderit in voluptate velit esse cillum dolore eu fugiat nulla pari&shy;atur. Excep&shy;teur sint occae&shy;cat cupi&shy;datat non proident, sunt in culpa qui officia dese&shy;runt mollit anim id est laborum. "; //send lots of data all at once $max=100; for($i=0;$i<$max;$i++) $text .= $text; $tf = $p->add_textflow($tf, $text, $optlist1); //////////////////end code///////////////////////////////// Try something like this instead: ///////////////////begin code/////////////////////////////// $text= "Lorem ipsum dolor sit amet, consectetur adi&shy;pi&shy;sicing elit, sed do eius&shy;mod tempor incidi&shy;dunt ut labore et dolore magna ali&shy;qua. Ut enim ad minim ve&shy;niam, quis nostrud exer&shy;citation ull&shy;amco la&shy;bo&shy;ris nisi ut ali&shy;quip ex ea commodo con&shy;sequat. Duis aute irure dolor in repre&shy;henderit in voluptate velit esse cillum dolore eu fugiat nulla pari&shy;atur. Excep&shy;teur sint occae&shy;cat cupi&shy;datat non proident, sunt in culpa qui officia dese&shy;runt mollit anim id est laborum. "; //send chunks of data $max=100; for($i=0;$i<$max;$i++) $tf = $p->add_textflow($tf, $text, $optlist1); //////////////////end code///////////////////////////////// In the second example we send less data, but we call the function more often. With the first example, I could only generate 3 or 4 pages of a PDF; with the latter example I could generate 200+ page PDF's. This took me a while to debug; hope it saves someone else some time. :) http://php.net/manual/en/function.pdf-add-textflow.php

« previous php.notes (#144941) next »