Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Processus en fond de tâche

4 réponses
Avatar
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'à 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=503a24000f5891952a0efbfb5e610eec35877f83@news.nemoweb.net>

4 réponses

Avatar
Julien Arlandis
Le 19/07/2014 à 12:36, Julien Arlandis a écrit :
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
?



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 &');
Avatar
YBM
Le 19/07/2014 12:54, Julien Arlandis a écrit :
Le 19/07/2014 à 12:36, Julien Arlandis a écrit :
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
?



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 &');




ça reste assez cradingue, tu peux pas monter une tâche en cron ?

P.S. on dit "tache de fond" pas "fond de tache".
Avatar
Julien Arlandis
Le 19/07/2014 à 20:27, YBM a écrit :
Le 19/07/2014 12:54, Julien Arlandis a écrit :
Le 19/07/2014 à 12:36, Julien Arlandis a écrit :
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
?



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 &');




ç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 ?
Avatar
yamo'
JSalut,

ulien Arlandis a tapoté, le 20/07/2014 00:35:
>
> ç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. -+-