8796 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Je vous explique mon problème. Je possède un site hébergé chez OVH. Sur ce site se trouvent des informations que je voudrais, chaque nuit, générer en PDF.

Mon idée : utiliser une tâche cron qui va générer du pdf à partir des infos se trouvant sur le site en utilisant la librairie php html2pdf.
Problème : il y a beaucoup trop d'informations à générer (plus de 600 pages), ce qui fait que je tombe sur un timeout ou un excès d'utilisation de mémoire.
Ma solution : Les infos peuvent être séparées en 39 catégories, je génère donc 39 pdf puis je les concatène tous en un seul pdf. Pour ce faire, j'ai du créer 40 tâches cron : 39 se déroulant à 3h du matin pour générer les pdf, 1 se déroulant à 4h du matin pour assembler les pdf.
Problème : je ne sais pourquoi mais chaque nuit, seulement une partie de mes fichiers s'exécutent et ne sont générés que quelques unes des catégories, jamais les mêmes (alors que la taille de chaque catégorie reste presque identique chaque jour).

Ma question :
Y aurait-il d'après vous une manière plus efficace de travailler, et qui au passage me permettrait de réaliser ce que je veux... ?

J'espère que je suis plus ou moins clair, si ce n'est pas le cas n'hésitez pas à le dire Smiley cligne

Merci d'avance pour votre aide

Séb

Au passage, le site en question est dans mon profil. Il s'agit de générer chaque fiche d'animal pour en faire une grosse encyclopédie rassemblant toutes les fiches.
Modifié par pixelb (05 Apr 2011 - 11:00)
J'essayerai peut etre d'ajouter une colonne dans la bdd qui servirait uniquement a tagger les documents modifiés -> par exemple changed (par défaut = 0), quand tu change un document tu passe changed à 1 pour ce document.

Ensuite je ferais uniquement 2 cron :
- le premier regénère les pdf dont le doc a été changé (changed = 1)
- le second pour recompiler le pdf complet

Je ne sais pas comment fonctionne la lib html2pdf mais si tu peux faire de l'extraction/remplacement de page ça pourrait même être bien plus simple car il ne faudrait dans ce cas que regénérer les pdf des documents modifiés et les réintégrer dans le pdf complet.
Je capte pas trop l'utilisation du Deamon et je ne sais pas si c'est fonctionnel avec mon type d'hébergement, je vais donc d'abord m'intéresser à la première solution proposée, qui pourrait peut être solutionner tous mes problèmes... Smiley biggrin

Merci à tous les deux pour vos idées, je reviens vers vous dès que possible pour vous tenir au courant
Apparemment ça semble fonctionner correctement en ne regénérant que ce qui a été modifié ! J'ai fait une tache cron qui fonctionne toutes les heures, qui ne fait rien si rien n'a été modifié, et qui regénère le pdf si qqchose a été modifié !

Merci pour l'idée !
Re,

Désolé de répondre bien après, mais il a aussi la possibilité de pouvoir modifier les paramètres d'Apache en lui indiquant (grâce à ini_set()):
- augmente moi la limitation mémoire que peut utiliser mon script (ini_set("memory_limit",'300M');)
- augmente moi le "time out" (ini_set("max_execution_time",'1500');)
- etc ...

Donc ton script fonctionne maintenant correctement car il a moins de chose à calculer, et que par conséquent, ça ne tombe plus en "time out".