Discussion:
Processus en fond de tâche
(trop ancien pour répondre)
Julien Arlandis
2014-07-19 10:36:01 UTC
Permalink
Bonjour,

Mon prototype de serveur JNTP codé en php doit exécuter des tâches en
parallèle pour gérer redistribuer à ses feeds les articles entrants,
jusqu'à présent je faisais un fork de la manière suivante :

pclose(popen('/usr/bin/php script.php &', 'r'));

Mais le résultat en terme de performances est absolument catastrophique,
lorsque le serveur reçoit beaucoup d'articles le % d'utilisation du CPU
grimpe en flèche. J'ignore si le problème est dû à l'exécution de
l'interpréteur php, au script script ou à une mauvaise utilisation de la
charge par php.

Je vais essayer cette méthode qui fonctionne aussi, même si je ne connais
pas les implications en terme de performance par rapport à l'ancienne
méthode :
shell_exec('/usr/bin/php script.php &');

Est ce que quelqu'un aurait une idée lumineuse pour me sortir de cette
impasse ?
--
Ce message a été posté avec Nemo : <http://news.nemoweb.net/?Jid=***@news.nemoweb.net>
Julien Arlandis
2014-07-19 10:54:12 UTC
Permalink
Post by Julien Arlandis
Bonjour,
Mon prototype de serveur JNTP codé en php doit exécuter des tâches en
parallèle pour gérer redistribuer à ses feeds les articles entrants, jusqu'à
pclose(popen('/usr/bin/php script.php &', 'r'));
Mais le résultat en terme de performances est absolument catastrophique,
lorsque le serveur reçoit beaucoup d'articles le % d'utilisation du CPU grimpe en
flèche. J'ignore si le problème est dû à l'exécution de l'interpréteur php,
au script script ou à une mauvaise utilisation de la charge par php.
Je vais essayer cette méthode qui fonctionne aussi, même si je ne connais pas
shell_exec('/usr/bin/php script.php &');
Est ce que quelqu'un aurait une idée lumineuse pour me sortir de cette impasse
?
Après test il semblerait que cette forme ne se parallélise pas :
shell_exec('/usr/bin/php script.php &');
en revanche ceci fonctionne :
shell_exec('/usr/bin/php script.php >> /dev/null &');
YBM
2014-07-19 18:27:27 UTC
Permalink
Post by Julien Arlandis
Post by Julien Arlandis
Bonjour,
Mon prototype de serveur JNTP codé en php doit exécuter des tâches en
parallèle pour gérer redistribuer à ses feeds les articles entrants, jusqu'à
pclose(popen('/usr/bin/php script.php &', 'r'));
Mais le résultat en terme de performances est absolument catastrophique,
lorsque le serveur reçoit beaucoup d'articles le % d'utilisation du CPU grimpe en
flèche. J'ignore si le problème est dû à l'exécution de l'interpréteur php,
au script script ou à une mauvaise utilisation de la charge par php.
Je vais essayer cette méthode qui fonctionne aussi, même si je ne connais pas
shell_exec('/usr/bin/php script.php &');
Est ce que quelqu'un aurait une idée lumineuse pour me sortir de cette impasse
?
shell_exec('/usr/bin/php script.php &');
shell_exec('/usr/bin/php script.php >> /dev/null &');
ça reste assez cradingue, tu peux pas monter une tâche en cron ?

P.S. on dit "tache de fond" pas "fond de tache".
Julien Arlandis
2014-07-19 22:35:48 UTC
Permalink
Post by YBM
Post by Julien Arlandis
Post by Julien Arlandis
Bonjour,
Mon prototype de serveur JNTP codé en php doit exécuter des tâches en
parallèle pour gérer redistribuer à ses feeds les articles entrants, jusqu'à
pclose(popen('/usr/bin/php script.php &', 'r'));
Mais le résultat en terme de performances est absolument catastrophique,
lorsque le serveur reçoit beaucoup d'articles le % d'utilisation du CPU grimpe en
flèche. J'ignore si le problème est dû à l'exécution de l'interpréteur php,
au script script ou à une mauvaise utilisation de la charge par php.
Je vais essayer cette méthode qui fonctionne aussi, même si je ne connais pas
shell_exec('/usr/bin/php script.php &');
Est ce que quelqu'un aurait une idée lumineuse pour me sortir de cette impasse
?
shell_exec('/usr/bin/php script.php &');
shell_exec('/usr/bin/php script.php >> /dev/null &');
ça reste assez cradingue, tu peux pas monter une tâche en cron ?
Oui mais le cron s'execute toutes les minutes, à quoi tu penses ?
yamo'
2014-07-26 08:41:10 UTC
Permalink
JSalut,
Post by Julien Arlandis
Post by YBM
ça reste assez cradingue, tu peux pas monter une tâche en cron ?
Oui mais le cron s'execute toutes les minutes, à quoi tu penses ?
Peut-être un truc du genre :

On stocke tout de suite l'id du message dans un fichier.
Toutes les secondes, on prend les 3 id du haut et on les enlève du
fichier. Ça fait 3 processus toutes les secondes, et on évite les gros
pics d'activités.

Après, il faudrait mettre en paramètre modifiable simplement ce 3 (au
début j'avais pensé à 10) pour tailler au plus juste pour le serveur.
--
Stéphane <http://pasdenom.info/fortune/?>
Chaque jour est veille pour les uns, lendemain pour d'autres,
mais aujourd'hui pour bien peu.
-+- Gilbert Cesbron (1913-1979), de petites choses. -+-
Loading...