1

Salut,

J'ai développé un site qui génère des contrats pré-remplis à la volée (merci pour html2pdf Spipu). Mais me voilà maintenant confronté à un problème : le site va être hébergé sur un serveur mutualisé d'OVH (60GP pour être précis), ne permettant pas d'imposer le set_time_limit que j'applique au script PHP qui génère les PDF. Je suis donc contraint à des exécutions ne dépassant pas les 30 secondes (à l'usage, cette restriction est plutôt de 15 secondes...). Or certains PDF possèdent plusieurs contrats à la suite, et la dizaine de pages est dépassée...

Bref, je me demandais si vous connaissiez un moyen de concaténer plusieurs PDF générés à la volée et de les balancer à l'internaute. Au cas où ;-)

Merci !
__________________
Ralph Sicabol

2

une fois le contrat pré-remplis, il est définitif ? si oui, le client peut le téléchargé autant de fois qu'il le veut ? car dans ce cas, je te conseillerais déjà de sauvegardé le PDF une fois pour toutes. Et quand un client veut télécharger plusieurs contrats d'un coup, ben tu lui fait un zip...

de plus, pour ton serveur, c'est un hébergement particulier, pas pro... tu as peut-être choisi un peu trop bas... Perso j'utilise le pack "Hébergement Linux pro standard" de 1&1 et je génère des pdfs sans pb, et je peux surtout configurer PHP comme je le veux (dont le set_time_limit)
Ancien pseudo : lolo

3

Merci de ta réponse.

En effet, pour l'instant la solution d'hébergement est un peu légère pour gérer des contrats d'une cinquantaine de pages, a priori ça ne sera pas la solution finale.

La question était surtout pour ma culture personnelle (et peut-être d'autres développeurs), une recherche sur Google ne m'a fourni pour le moment que des solutions assez foireuses ;-)
__________________
Ralph Sicabol

4

Bonjour,

Tout d'abord un grand bravo à Spipu pour ce script, et aussi un grand merci...

Voilà ce qui m'amène, j'ai un petit souci, qui est peu-être en relation avec le set_time_limit :

Au premier appel, mon PDF ne se génère pas, aucun message d'erreur mais une belle page blanche.
Si je désactive la génération du PDF et que je fais un echo sur ob_get_clean(), le contenu s'affiche parfaitement.
Et là si je réactive la génération du PDF, il se génère très proprement.

Avez-vous une idée sur la question ?

5

la génération de ton pdf nécessite bcp de requêtes SQL ?

quand tu dis que tu réactive la génération du PDF, c'est juste à partir de l'html généré que tu repars ? ou est-ce que tu régénères également l'html ?

t'as essayé d'augmenter le set_time_limit pour voir si il y arrivait ?

il marche à tous les coups une fois que tu as fait le premier test de visu de l'html ?
Ancien pseudo : lolo

6

la génération de ton pdf nécessite bcp de requêtes SQL ?
>>> Trois requêtes MySQL.

quand tu dis que tu réactive la génération du PDF...
>>> Je passe les lignes suivantes en commentaire, puis j'enlève les commentaires :

require_once('library/html2pdf/html2pdf.class.php');
$html2pdf = new HTML2PDF('P','A4', 'fr', array(15, 15, 15, 15));
$html2pdf->WriteHTML($content, isset($_GET['vuehtml']));
$html2pdf->Output('monFichier.pdf');


t'as essayé d'augmenter le set_time_limit pour voir si il y arrivait ?
>>> Je viens d'essayer de le passer à 120, mais rien ne change (le safe-mode est sur off, et le max_execution_time est de 30)

il marche à tous les coups une fois que tu as fait le premier test de visu de l'html ?
>>> Absolument !!!

J'ai essayé aussi de charger $content petit à petit, en sectorisant mon code à charger en tranche et en faisant un ob_get_clean() à chaque fois, histoire de ne pas surcharger le cache, mais ça ne change rien :

ob_start();
echo '<nobreak>';
include('premierePartie.inc.php');
echo '</nobreak>';
$content = ob_get_clean();

ob_start();
echo '<nobreak>';
include('deuxiemePartie.inc.php');
echo '</nobreak>';
$content .= ob_get_clean();


C'est grave docteur ?
Merci pour ta réactivité.

7

dans les fichiers error.log et php_error.log, il y a des trucs d'afficher ?

est-ce que ca fait ca que sous IE ? ou également sous FF ?

si tu fais "enregistrer sous" sur un lien allant vers la génération PDF, la sauvegarde marche ?
Ancien pseudo : lolo

8

Ancien pseudo : lolo

9

Le scénario décrit c'est sous Firefox 3.
Je viens de réinstaller Firefox 2 pour l'occasion => Aucun problème, ça fonctionne parfaitement !
Sur IE 7 idem, tout fonctionne à merveille...

Bug FF 3 ?

Pour info, où puis-je trouver les fichiers error.log et php_error.log (je suis sur un 720Plan d'OVH) ?

http://fpdf.org/fr/FAQ.php#q3
>>> Même si je tente un $html2pdf->Output('monFichier.pdf', true), rien ne se passe.

10

sous ovh, aucune idée sad mais par défaut, le php_error.log n 'est pas actif dans le php.ini, il faut donc l'activer (possible seulement si t'as accès à la config php bien sur)

sinon, t'as quelle version d'adobe reader ? car j'avais eu des pbs similaires : il fallait que le plugins soit chargé une fois avant que ca ne marche. j'ai mis à jour, et je n'ai plus eu l'erreur
Ancien pseudo : lolo

11

J'ai le même souci avec des fichiers trop long (plus de 120 pages environ). La visualisation HTML marche mais pas la génération du pdf. La page reste blanche.

12

attention, si vous avez des images dynamiques (générés par du PHP) qui sont incluses dans le PDF, il faut que l'url de l'image soit complète (http:....) et non en localhost (cf exemple9) sinon cela peut engendrer une page blanche.
Ancien pseudo : lolo

13

Souci réglé pour ma part, en passant sur un serveur dédié et en lui allouant plus de mémoire et une durée maximale d'exécution de scripts plus grande.

14

vi, en effet, ca aussi ca peut aider wink

et il faut tjrs penser à activer l'affichage des erreurs PHP dans l'environnement de dev et de recette, car sinon, des erreurs comme le temps maximal d'exécution n'apparaissent pas et on a alors une page blanche sans plus d'explication...
Ancien pseudo : lolo