2010-09-28 6 views
0

J'essaye de faire un processus d'arrière-plan potentiellement long en réponse à une requête AJAX entrante, mais en utilisant nohup ou setsid via shell_exec provoque le bombardement du serveur. Nous utilisons suexec et FastCGI, et quand il bombarde, il a fallu l'analyse du serveur entier.Utilisation de nohup ou setsid dans PHP comme Fast CGI

shell_exec("nohup /home/me/myscript.php"); 

Le script ne fait rien en ce moment long, juste en sortie à un fichier non-existant (ce qui ne se produit jamais, parce qu'il explose en premier)

Merci!

+0

Vous devriez certainement demander sur serverfault, plus d'experts là-bas. Mais une chose: vous devriez par précaution nohup l'interpréteur php avant le script ('nohup/usr/bin/php/home /../ script.php'). Ces types d'utilitaires ne fonctionnent pas bien sur les scripts shebang. – mario

Répondre

0

J'ai toujours vu les avertissements à http://php.net/manual/en/intro.pcntl.php (bien que vous utilisiez nohup, je sais) comme un avertissement que le forking à partir des processus de serveur Web n'est pas un moyen sûr d'aller. Si un processus en arrière-plan a besoin de démarrer, je vais créer un processus de travail démon/toujours en cours d'exécution qui peut recevoir de telles requêtes (et qui n'a rien à voir avec le serveur web), ce qui forks/nohups à volonté.