Fork et PHP utile ??

Bonsoir …

Alors voilà … thème de la soirée les forks et PHP

On lit souvent sur les forums que les forks en PHP servent strictement à rien et tous le … et je dois avouer que de la prog système en PHP, c’est vraiment bof bof.

Mais cette semaine, pour le développement de mon application de gestion de NewsLetter (pour mon apprentissage), on m’a obligé à faire des forks et autre astuces système pour optimiser un peu la bête ^^.

Au départ, j’étais plutôt septique, je trouvais ça même louche … j’avais même jamais entendu parler de fork sur PHP, mais au final, j’étais plutôt surpris du résultat …

Pour exemple : Un script doit envoyer 60 mails.

Une appli en single :

[sourcecode language= »php »]
for($i=0;$i<60;$i++) { mail($mail_a[$i],"sujet","message"); } [/sourcecode]

Une appli (en « multi thread ») :
[sourcecode language= »php »]
for($i=0;$i<60;$i++) { $pid = pcntl_fork(); if ($pid == -1) { die('dupplication impossible'); } else if ($pid) { $pid_a[] = $pid; //juste au cas où } else { mail($mail_a[$i],"sujet","message"); } } pcntl_waitpid ( 0 , $status); // on attend la mort de tous ses fils ... c'est cruel [/sourcecode] Si vous chronométrez le temps que ces deux scripts prennent, l'on remarque la rapidité du fork ... Lorsque j'ai testé le code (sur le serveur de ma boite), le premier mettait presque 30 sec pour envoyer les 60 mails (et encore, je les recevais pas tous), dans le deuxième cas, c'était instantanné, la plupart des threads ce terminaient dans la seconde. Donc voilà ... ne jamais dire que de la prog système dans le web ça sert à rien ;-), je go tenter de faire un site avec des signaux et des sémaphores :-d.