|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Clémentine Inscription : juin 2006 Messages : 128 ![]() |
Bonjour,
Je suis sous 1and1 mutualisé sans SSH ni tâches CRON possibles. J'ai un script qui créé des fichiers pdf (via html2pdf) mais ce script prend trop de mémoire sur le serveur et j'ai une erreur (memory limit). J'ai augmenté la mémoire via un php.ini au maximum autorisé. Cela ne suffit pas. Je souhaite donc créer plusieurs script exécuté l'un après l'autre qui crééront chacun une page (pas de pb de mémoire pour une seule page). L'utilisateur clic sur créér le pdf. Le premier script créé la page 1, libère la mémoire du serveur, passe la main au second script qui créé la page 2, libère la mémoire etc... Je n'ai aucune idée de quelles fonctions utiliser. Merci de votre aide |
|
|
00
|
|
|
#2 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Tu devrais faire ça avec Ajax, lancer les scripts de manière synchrone les uns après les autres ne va rien arranger.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
00
|
|
|
#3 |
|
Membre à l'essai
![]() Clémentine Inscription : juin 2006 Messages : 128 ![]() |
As tu une piste pour l'ajax ? Car le faire en asynchrone (Ajax je crois) ne me diras pas quand le précédent script est terminé.
Comment s'y prendre en Ajax pour exécuter le script script.php toutes les minutes 20 fois (avec un paramètre passé) par exemples suite au clic d'un seul bouton ? |
|
|
00
|
|
|
#4 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
L'idée serait de générer le document page par page comme tu le suggère et de piloter ordonnancement des traitements avec JavaScript (quand une page est fini, on déclenche le trigger de la page suivante et ainsi de suite), on peut même afficher une barre de progression dans ce cas.
En revanche, ça me parait difficile d'émuler un cronjob de cette façon.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
00
|
|
|
#5 |
|
Membre à l'essai
![]() Clémentine Inscription : juin 2006 Messages : 128 ![]() |
Tu dis: "Lancer les scripts de manière synchrone les uns après les autres ne va rien arranger." Peux tu m'expliquer cela ? La mémoire n'est pas libérée entre chaque script ?
Ta solution sous entend que la personne doit rester devant son ordi et sur le site pendant la génération des pages. C'est assez pénalisant car si la personne se déconnecte. L'idéal serait que les pdfs soient générés puis de les envoyer par email. |
|
|
00
|
|
|
#6 | |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Citation:
En fait ton problème s'apparente à la création d'une queue de traitements en PHP capable d'être démarée de manière asynchrone. J'ai trouvé un article sur la question mais je doute que tu puisse le mettre en place techniquement car - comme beaucoup de solution de ce genre - il nécessite la mise en place de PCNTL... Bref, tu peux toujours jeter un oeil: http://www.shapeshifter.se/2008/08/0...tion-with-php/
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
|
00
|
|
|
#7 |
|
Membre à l'essai
![]() Clémentine Inscription : juin 2006 Messages : 128 ![]() |
Le problème ne vient pas du temps d’exécution mais des 32Mo de mémoire maximum.
Si je lance 20 script en Ajax l'un après l'autre directement sans attendre le retour du précédent, cela devrait passer (chaque script prend 10Mo mais je pense que la limite est de 32Mo par script et non sur le serveur ... ? |
|
|
00
|
|
|
#8 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
A voir si tous les balancer d'un coup va fonctionner
Sinon, tu pourra toujours les lancer séquentiellement, même en Ajax: il suffit de mettre dans la callback "success" le lancement du suivant.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
00
|
|
|
#9 |
|
Membre confirmé
![]() Vincent Développeur informatique Inscription : janvier 2009 Messages : 246 ![]() |
Et en mettant des unset() régulièrement dans ton script ?
|
|
|
00
|
|
|
#10 | |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Ce n'est pas certain, unset ne libère pas immédiatement la mémoire, c'est le garbage collector qui s'en occupe (mais il n'est présent qu'a partir de PHP 5.3).
A lire sur le manuel: Citation:
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
|
00
|
|
|
#11 |
|
Membre confirmé
![]() Vincent Développeur informatique Inscription : janvier 2009 Messages : 246 ![]() |
Ok, merci de ces précisions intéressantes, mais est-ce que tu pourrais s'il te plais traduire précisément ce que tu as mis en anglais car j'ai peur de ne pas saisir toutes les finesses. Merci
|
|
|
00
|
|
|
#12 | ||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
ça roule
Citation:
Citation:
- unset() > rapide mais libération mémoire aléatoire - = null > lent mais libération mémoire immédiate
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
||
|
10
|
|
|
#13 |
|
Membre confirmé
![]() Vincent Développeur informatique Inscription : janvier 2009 Messages : 246 ![]() |
Merci
|
|
|
00
|
|
|
#14 |
|
Membre à l'essai
![]() Clémentine Inscription : juin 2006 Messages : 128 ![]() |
J'utilise 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 Merci pour les informations |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com