Browsing this Thread:
1 Anonymous Users
limite d'exécution de script, aide/suggestion svp |
||
|---|---|---|
|
Nouveau
Joined:
2004/11/22 21:39 Group:
Utilisateurs Enregistrés Posts:
4
Level : 1; EXP : 21
HP : 0 / 5 MP : 1 / 90 ![]() |
Bonjour,
Voici une brève explication du problème: J'ai un script appelé en cronjob qui, en gros envoit des courriels à des membres (un genre de «mail list», mais un peu plus complexe), car chaque courriel est unique au membre. Il y a environ 20 à 25 courriels pour l'instant à envoyer, donc, ce n'est pas trop grave. Si j'exécute le script en remplaçant l'envoit des courriels par un afichage, le script prend moin d'une seconde à s'exécuter au complet. Le problème est que la liste des membres augmente et qu'en utilisant la fonction «mail» de php, l'hébergeur fait une vérification du courriel par un antivirus et anti-spam, ce qui ralenti le processus d'envoit à environ .7 secondes par courriel.. Donc, pour l'envoit des courriels, ca prend un peu plus de 20 secondes. Ayant une limite de 30 secondes pour le script, je vois la ligne de rupture de très près. L'hébergement se fait sur un serveur partagé, en safe_mode. Donc, on oubli les «ini_set» pour le «time_execution» car non autorisé et ce n'est pas très bien vu de la part des hébergeurs en général. Si vous avez une solution suggestion ou besoin de plus de détails, n'hésitez pas. Merci!
Posted on: 3/4 12:13
|
|
Transfer
|
||
Re: limite d'exécution de script, aide/suggestion svp |
||
|---|---|---|
|
Webmestre
![]()
Joined:
1969/12/31 19:00 From Montréal
Group:
Webmestres Utilisateurs Enregistrés Organisation Posts:
413
Level : 18; EXP : 90
HP : 0 / 447 MP : 137 / 53067 ![]() |
Je ne me souviens plus très bien de ce qui est activé/désactivé par défaut en safe_mode, mais as-tu accès à lancer d'autres processus ou à forker ton processus de cron?
Y aurait-il moyen d'envoyer moins de courriels à la fois et d'augmenter la fréquence de ton cron? Sinon tu pourrais toujours essayé avec un php_value dans ton .htaccess pour modifier "par la bande" le max execution time. Bonne chance.
Posted on: 3/4 16:02
|
|
Transfer
|
||
Re: limite d'exécution de script, aide/suggestion svp |
||
|---|---|---|
|
Webmestre
![]()
Joined:
2004/1/31 14:41 From Montréal
Group:
Webmestres Utilisateurs Enregistrés Organisation Posts:
313
Level : 16; EXP : 54
HP : 0 / 388 MP : 104 / 7379 ![]() |
La solution typique à se problème est d'exécuter la tâche hors-web en envoyant les messages dans un queue qui sera traité par un cron ou un job server. Ça ne règle pas le problème du contrôle de spam qui prend du temps, mais au moins la page répond plus rapidement pour ton utilisateur.
Il y a justement un article la dessus aujourd'hui. http://devzone.zend.com/article/11907 ... the-Zend-Server-Job-Queue Le problème, c'est que ses choses nécessite des architectures dédiés. Personellement, j'utilise gearman qui rend vraiment la tâche très simple et sans les coûts associés au Zend Platform. Sur un hébergeur partagé, tu peux t'en sortir avec un cron job. Tu as simplement à mettre les courriels à envoyer à quelque part plutôt que de les envoyer directement et ton cron passe à toutes les minutes pour en envoyer une série. Sans cron, il y a des choses douteuses que tu peux faire pour en envoyer quelques unes par requête web, mais changer d'hébergeur est probablement une meilleur solution.
Posted on: 3/5 9:40
|
|
Transfer
|
||
Re: limite d'exécution de script, aide/suggestion svp |
||
|---|---|---|
|
Nouveau
Joined:
2009/7/7 15:55 Group:
Utilisateurs Enregistrés Posts:
14
Level : 2; EXP : 50
HP : 0 / 37 MP : 4 / 117 ![]() |
Quand tu utilise mail(), à chaque envoie de mail, t'as une ouverture de socket qui est faite, vers le serveur mail, et le socket est fermé par la suite, et ce pour chaque mail. C'est très lourd. L'idéal c'est d'ouvrir une connection socket manuellement vers le serveur mail, d'envoyer tous les mails à envoyer d'un coupe, et de refermer le socket. Y'a plusieurs classes existantes qui peuvent t'aider à faire ça. Avec Zend Framework, t'as Zend_Mail qui peut faire le travail je crois.
Moi je me ferais un système de 'queue', où chaque exécution de ton cron va envoyer une vingtaine de mails, et tu l'exécute chaque minute, pendant dix minutes disons, pour être certain qu'il puisse vider la 'queue' au complet. Ca, combiné à la connection socket, devrait te donner pas mal de lattitude.
Posted on: 3/5 14:21
|
|
Transfer
|
||
You can view topic.
You cannot start a new topic.
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.






Transfer

14th Aug

