PHP Quebec
http://www.confoo.ca/fr/
PHP.net
PHP Québec
Mission
L'équipe
Nos projets
Contact
Ressources
Forum
Recherche

Advanced Search
Qui est en ligne
15 user(s) are online (7 user(s) are browsing Forum)

Members: 0
Guests: 15

more...

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
Offline
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 the post to other applications 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
Offline
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 the post to other applications 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
Offline
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 the post to other applications 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
Offline
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 the post to other applications 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.

[Advanced Search]


Evènements à venir
Connexion
Username:

Password:


Lost Password?

Register now!
Canal IRC
Venez nous voir sur notre canal IRC avec votre client favori :

irc.phpquebec.org
canal : #phpquebec
Membre de
Hébergé par
Nexen Services