19-03-2013, 09:54 PM
(19-03-2013, 08:35 PM)Argorate a écrit : niahoo: va falloir être plus expressif, argumente pour php, développe pour ruby.
sephi: l'autre sujet ne parlais pas de cette aspect, si c'est le cas c'était implicite, dans ce cas je veux bien aussi une réponse de plus de deux lignes plz
Faire ce que tu veux faire implique d'avoir un processus qui tourne sans cesse afin d'y stocker l'état.
Ce script doit donc tourner en permanence et ne jamais planter. Si ça arrive, il doit être relancé et pouvoir récupérer un état sain (pas forcément celui au moment du plantage, puisque cet état n'était peut-être pas très sain s'il a conduit à un plantage). Ce processus doit pouvoir communiquer avec d'autres choses (pusher des données à des navigateurs, directement ou via un intermédiaire).
Pour toutes ces raisons, PHP peut rapidement être exclu : il n'y a pas de threads, ce qui rend l'exécution du script très fragile et l'empêche de faire plusieurs choses à la foi.
En Ruby, tu as des solutions comme Celluloid qui imitent le modèle d'acteurs de Erlang : des acteurs qui tournent en parallèle (chacun ayant son état) et qui s'envoient des messages.
Ça permet une bonne gestion de la concurrence (chaque acteur possède sa propre queue de messages) et une bonne tolérance à la faute (les composants peuvent être supervisés par d'autres composants qui peuvent les lancer/relancer).