1

Bonjour,

Je souhaite utiliser html2pdf sur un serveur linux mutualisé 1and1.
Je génère 80 pages de tableaux (1 tableau par page contient environ 50*3 cellules)

J'obtiens l"erreur suivante: Fatal error: Out of memory (allocated 32768000)

1and1 bloque la mémoire à 32Mo. Cette limite est-elle trop basse ou est-ce mon code qui est mal fait ?

Je me pose la question car mes 80 pages sont assez simple et que l'affichage de la page à générer et très rapide !

Cela fonctionne très bien en local (2min30 pour générer les 80pages sur un très vieux pc).

Avez-vous des pistes car je dois absolument utiliser ce serveur sad

Merci

2

32Mo c'est très légé...

regarde la consommation de ton navigateur pour afficher la meme page... il prend largement plus de 32Mo.

je pense qu'un serveur mutualisé est un peu limite pour faire cela.

sinon, essaye en appelant plusieurs fois de sutie la méthode writeHTML pour chaque page séparément.
Ancien pseudo : lolo

3

J'ai essayé d'appeler plusieurs fois le méthode writeHTML à la suite:
$html2pdf->writeHTML($content);
$html2pdf->writeHTML($content);
$html2pdf->writeHTML($content);

Cela ne change rien le serveur plante au boute de la 10 fois que j'apelle la méthode (il plante aussi au bout de 10 pages si un seul appel).

Il y a-t-il une technique pour générer les pages une par une puis de générer un seul document afin de soulager le serveur niveau mémoire ?

De plus je ne peux pas utiliser pdftk car je ne peux pas l'installer sur un 1and1 mutualisé...

Merci

4

ben malheureusement, là, il n'y a que 2 solutions :

- essayer de simplifier l'html (moins de divs ou de tableaux imbriqués)
- avoir un serveur avec plus de ressources
Ancien pseudo : lolo

5

Les tableaux ne sont pas imbriqués juste 50 lignes * 3 colonnes par pages.

Appeler plusieurs fois writeHTML a-t-il déjà réglé le problème de mémoire ?

Je n'ai aucune contrainte de temps, je peux attendre qu'une page soit générée, libérer la mémoire et continuer (mais le tout dans le même document grr).

6

J'ai opté pour la solution de générer les fichiers pdf de manière séparée.

Comment faire pour que la mémoire soit libérée après chaque création de pdf.

J'ai tenté:


// récupération du contenu HTML
ob_start();
include(dirname(__FILE__).'/pdf.php');
$content = ob_get_clean();

// conversion HTML => PDF
require_once(dirname(__FILE__).'/html2pdf/html2pdf_v4.01/html2pdf.class.php');


for($i=1;$i <= 80;$i++){

try
{
$html2pdf = new HTML2PDF('P','A4', 'fr');
//$html2pdf->writeHTML($content, isset($_GET['vuehtml']));
$html2pdf->writeHTML($content);
$html2pdf->Output('compte_rendu_'.$a.'.pdf','F');
}
catch(HTML2PDF_exception $e) { echo $e; }

}

Mais ça ne libère pas la mémoire.

Les fichiers doivent se créer suite au clic d'un bouton de l'utilisateur (pas de tâche CRON possible).

7

normalement, avec un unset de $html2pdf, la mémoire doit être libérée
Ancien pseudo : lolo

8

Je viens de tester le unset comme ceci:

for($a=1;$a <= 30;$a++){

try
{
$html2pdf = new HTML2PDF('P','A4', 'fr');
//$html2pdf->writeHTML($content, isset($_GET['vuehtml']));
$html2pdf->writeHTML($content);
$html2pdf->Output('compte_rendu_'.$a.'.pdf','F');
}
catch(HTML2PDF_exception $e) { echo $e; }


unset($html2pdf);
}

Et après 3 boucles cela plante toujours au niveau de la mémoire sad

9

Au final j'ai 'utilisé Ajax pour appeler les créations de pages une à une dès que la précédente est finie. Le serveur ne surcharge plus !

Et à la fin je concatène le fichier toujours en Ajax.

10

Bonjour,

Comment as tu fait pour fusionner ensuite le pdf stp ?

Bonne journée

11

Salut,

désolé de faire remonter les vieux posts mais je suis aussi intéressée...

12