Démon PHP avec du fork :) - PHP - Programmation
Marsh Posté le 16-08-2011 à 10:22:12
Assez étonnant d'utiliser PHP pour faire ce genre de chose Du C/C++ aurait été plus adapté je trouve...
Marsh Posté le 16-08-2011 à 10:26:58
rufo a écrit : Assez étonnant d'utiliser PHP pour faire ce genre de chose Du C/C++ aurait été plus adapté je trouve... |
Oui, c'est ce qu'on me dit souvent Néanmoins, le premier démon a été utilisé dans ma boite, qui avait tous ses applicatifs en PHP. Donc...
De plus ce qui va tourner derrière sera en PHP aussi donc
je ne maitrise pas le C et encore moins le C++... Mais je suis d'accord avec toi.
Marsh Posté le 16-08-2011 à 11:23:19
Ben en fait, que ce soit du C ou du PHP, (bien que le langage soit différent)
tu peux faire communiquer les processus, après c'est le comment.
D'un côté j'ai les queues de messages, il y a aussi les pipes, et peut être encore d'autres solutions... J'ai aussi vu qu'on pouvait faire ça avec des sémaphores, mais ça n'a plus l'air vraiment "à la mode"...
Marsh Posté le 18-08-2011 à 11:23:50
Je te conseille de faire un shell_exec si tu es sous unix.
Le principe est d'avoir un père et des fils, mais dutiliser le même fichier.php pour cela, que le père va relancer en ligne de commande en passant en argument une marque de sa paternité (très utile dans le cas de plusieurs pères, pour savoir à quel papa tel ou tel gosse appartient)
Voici, en speed, une partie du code que j'utilise pour un crawler de site en PHP :
Code :
|
La partie qui t'intéresse tout particulièrement est :
Code :
|
Marsh Posté le 20-08-2011 à 13:41:51
Pour le getNbProcess, il suffit d'executer en shell_exec un
Code :
|
Le wc -l te retourne le nombre de lignes, le grep -v grep te filtre la commande grep elle-même (qui parasite le résultat)
Fais un trim() sur le résultat et tu obtiens le nombre de fils qui sont actuellement en cours d'execution
Marsh Posté le 20-08-2011 à 14:02:16
Merci pour ce bout de code, cependant, ton démon diffère quelques peu du mien...
Pour commencer, mes processus ont une durée de vie non déterminée. Ils vivent à vitam éternam
Voilà pourquoi ils doivent pouvoir communiquer après avoir été créés.
Dans ton cas, tu leur donne le boulot à leur création, dans le mien, ils doivent pouvoir recevoir du boulot à n'importe quel moment de leur exécution.
Marsh Posté le 16-08-2011 à 10:02:55
Hello à tous
Je sais que peu de gens utilisent PHP pour faire ce genre de chose... Mais je tente quand même
Je suis en train de faire un système de démon multi processus en PHP. A Dire vrai j'en avais déjà fait un pour ma boite, mais vu que je désire en faire une version plus clean, et plus générique, c'est le moment de peut être revoir certains choix techniques.
Pour info je créé mes processus avec un bon vieux fork (et non un process_open).
Cependant, après avoir créé les processus, il faut pouvoir dialoguer avec
Dans la première version que j'ai faite, j'avais utilisé les queues de message System V pour remplir ce rôle, mais en même temps je le dit qu'il y a peut être d'autres possibilité moins délicates à implémenter, ou plus efficaces. Je sais que c'est aussi possible d'utiliser les pipes.
Des idées ?