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
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
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 ?
Spipu Le 09/02/2009 à 20:29 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 ?
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é.
Spipu Le 09/02/2009 à 21:13 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 ?
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.
Spipu Le 23/02/2009 à 14:03 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.
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.