1

Salut

Je ne sais pas si quelqu'un est déjà tombé sur ce cas-là et malheureusement je n'arrive pas à avoir un nombre précis, mais à un caractère près, un de trop, et hop au lieu d'obtenir le PDF, on me propose d'enregistrer ma page de traitement PHP devant générer le PDF...

J'ai calculé approximativement 59000 caractères (un é devient 8 caractères, j'ai bien compté côté code).

Bizarre non ?

2

et quand tu l'enregistres, il est lisible ? c'est du pdf ?
Ancien pseudo : lolo

3

Ca me télécharge un fichier de 0 Ko.

4

il plante pendant la création de l'HTML ? ou pendant la conversion en pdf ?

pour voir cela, essaye d'écrire dans un fichier là ou il en est : file_put_contents('./test.log', 'etape 1');
Ancien pseudo : lolo

5

Alors j'ai testé ainsi :

$content = ob_get_clean();
require_once(dirname(__FILE__).'/../html2pdf.class.php');
$html2pdf = new HTML2PDF('P','A4', 'fr');
$html2pdf->pdf->AddFont('trebuchet', '', 'trebuchet.php');
$html2pdf->pdf->AddFont('trebuchet', 'I', 'trebucheti.php');
$html2pdf->pdf->AddFont('trebuchet', 'B', 'trebuchetb.php');
$html2pdf->pdf->AddFont('trebuchet', 'BI', 'trebuchetbi.php');
$html2pdf->setTestTdInOnePage(false);
file_put_contents('./test.log', 'etape 1');
$html2pdf->WriteHTML($content);
file_put_contents('./test2.log', 'etape 2');
$nbpages = $html2pdf->pdf->page;
$updating = mysql_db_query($base,"UPDATE wp_posts SET pages = '$nbpages' WHERE ID = '$p' ;");
$html2pdf->Output();
exit;

et si j'ai bien le premier test, je n'ai pas le second test2... et tout ça pour un simple caractère !
en testant pour copier le html dans un log, à 56945 caractères le PDF se crée, à 56946 caractères, ça foire...

6

donc il plante lors de la conversion.

57ko de texte, c'est énorme. peut-être que le serveur n'arrive pas à suivre. t'as regardé dans les fichiers de log apache et php si il y avait quelque chose de marqué ?

(j'édite ton titre pour qu'il corresponde plus au problème)
Ancien pseudo : lolo

7

Je n'y vois rien de particulier :

les plus récents datent d'hier lorsque j'ai fait le même test :
82.245.112.48 - - [07/Dec/2008:23:59:18 +0100] "POST /admin/saisie.php?ID=49 HTTP/1.1" 200 25948 "admin/saisie.php?ID=49" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Media Center PC 4.0)"
82.245.112.48 - - [07/Dec/2008:23:59:19 +0100] "GET /admin/upload.php HTTP/1.1" 200 2017 "admin/saisie.php?ID=49" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Media Center PC 4.0)"

et sinon dans le error.log :
[Mon Dec 08 14:08:19 2008] [error] [client 83.198.232.170] File does not exist: /var/www/web1/web/admin/PicExportError, referer: admin/saisie.php?ID=50
[Mon Dec 08 14:08:19 2008] [error] [client 83.198.232.170] File does not exist: /var/www/web1/web/admin/PicExportError, referer: jscripts/tiny_mce/blank.htm
[Mon Dec 08 14:29:22 2008] [error] [client 83.198.232.170] File does not exist: /var/www/web1/web/admin/PicExportError, referer: jscripts/tiny_mce/blank.htm

mais bon ça doit venir de la longueur du texte, je ne vois que çà, est-ce à dire qu'il faudrait réduire la longueur des articles ? sad

8

et dans le php_error.log ?

je viens de tester avec un fichier html de 80ko, d'une 30aine de page, et ca a marché sans pb chez moi...

je pense plus à un problème de ressource ou de temps d'exécution qui killerait le processus d'apache/php
Ancien pseudo : lolo

9

Effectivement... Quand je mate le error.log d'Apache, j'ai ça :

Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 35 bytes) in /var/www/web1/web/pdf/parsingHTML.class.php on line 191

Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 16 bytes) in /var/www/web1/web/pdf/parsingHTML.class.php on line 182

Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 4 bytes) in /var/www/web1/web/pdf/parsingHTML.class.php on line 188

Et dans mon php.ini :

max_execution_time = 30 ; Maximum execution time of each script, in seconds
max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
memory_limit = 16M ; Maximum amount of memory a script may consume (16MB)

J'hésite à passer de 16 à 36, sauf si je cible sur le dossier /pdf/ via un .htaccess :

<FilesMatch "\.(php|html?)$">
php_value memory_limit 36M
</FilesMatch>

Qu'en penses-tu, Spipu ? Ca me parait lourd malgré tout... Je peux essayer d'optimiser, sans trop savoir où ça coince, mais bon la différence est assez large sad

10

essaye de passer à 32mo et de voir avec la fnc de debug introduite dans la v3.15 la quantité de memooire utilisée (ne marque que sous linux)
Ancien pseudo : lolo