PHP, gestion et dialogue avec des processus fils.
Posté : 27 avr. 2011, 14:45
Bonjour à tous,
Je m'adresse à vous dans l'espoir de trouver une solution qui m'éviterait de développer ce qui me semble être une roue.
Je dois développer un système très classique en ce qui concerne son architecture. Il s'agit d'un système composé d'un "moteur central" et de "connecteurs". Les "connecteurs" permettent au "moteur central" d'interagir avec son environnement, constitué de sources d'information hétérogènes (du point de vue de leurs interfaces d'accès). Autrement dit, les "connecteurs" assurent un "découplage logique" entre le "moteur central" et son environnement.
Les "connecteurs" peuvent prendre deux formes :
La mise en oeuvre de la seconde solution nécessite d'implémenter les éléments fonctionnels suivants :
Et, d'autre part, je pense ne pas être le premier à envisager ce genre de solution.
Connaissez-vous un module PHP qui remplisse ce besoin?
Merci d'avance,
Denis
Je m'adresse à vous dans l'espoir de trouver une solution qui m'éviterait de développer ce qui me semble être une roue.
Je dois développer un système très classique en ce qui concerne son architecture. Il s'agit d'un système composé d'un "moteur central" et de "connecteurs". Les "connecteurs" permettent au "moteur central" d'interagir avec son environnement, constitué de sources d'information hétérogènes (du point de vue de leurs interfaces d'accès). Autrement dit, les "connecteurs" assurent un "découplage logique" entre le "moteur central" et son environnement.
Les "connecteurs" peuvent prendre deux formes :
- Une solution consiste à implémenter les connecteurs sous la forme de "greffons" (traduction de l'anglais "plugin"). Dans ce cas, le connecteur est un "bout de code (PHP, en l'occurrence) étranger" qui est intégré, à la demande, au code du système central. Le connecteur et le système fusionnent pour ne constituer qu'un seul processus.
- Une autre solution consiste à implémenter les connecteurs sous la forme de processus externes, à l'image des scripts CGIs. Dans ce cas, le connecteur et le système constituent deux processus distincts, qui communiquent via un protocole quelconque.
- La première solution impose un langage pour le développement des greffons. Le moteur central étant développé en PHP, les greffons doivent être développés en PHP.
- La deuxième solution offre plus de sécurité, car le connecteur et le système central s'exécutent dans des processus distincts. Un plantage du connecteur ne compromet pas les fonctions du système central.
La mise en oeuvre de la seconde solution nécessite d'implémenter les éléments fonctionnels suivants :
- Un système robuste de gestion des "forks" (nombre maximum de fils,...).
- Un système robuste et simple qui permet le dialogue entre un processus père et ses fils. L'idéal serait d'implémenter un dialogue via les flux standards (STDIN/STDOUT), à l'image du CGI.
Et, d'autre part, je pense ne pas être le premier à envisager ce genre de solution.
Connaissez-vous un module PHP qui remplisse ce besoin?
Merci d'avance,
Denis