2017-05-25 2 views
1

Donc, pour commencer, je construisais une application NodeJS qui fonctionne aux côtés d'un site web. Ceci est construit et ce que je veux est de le lancer via PHP. Vous pouvez donc cliquer sur enregistrer, puis le démarrer, si nécessaire.Lancement du nœud de php semble garder php en cours d'exécution?

L'application est un serveur websocket, et écoute sur une socket web et traite les données/commandes d'un client (le front-end de mon site web).

Maintenant, le code que je utilise pour le lancer est la suivante:

$command = '/usr/local/bin/node main.js & echo $!'; 
$processid = shell_exec($command); 

Mais pour une raison quelconque lorsque je clique économiser sur le front-end il se bloque juste et continue à charger ... mais montrant rien la page? Il crée le processus que je peux le voir faire:

lsof -i tcp:8000 

et la page ne s'arrête que le chargement lorsque je tue le processus que le noeud est en marche ...

J'utilise:

kill -9 <pid> 

pour le tuer. Donc je suis un peu perdu sur pourquoi il ne fonctionne pas en arrière-plan et finit les scripts PHP ... il se bloque juste dessus?

Toute aide serait appréciée. Une fois note, c'est que tout fonctionne depuis la ligne de commande, donc le fichier est une classe de lancement séparée, et si je l'exécute via php et ajoute du code pour faire des tâches ça marche, c'est seulement quand je l'appelle d'autre chose que j'ai le problème?

Si cela aide; le framework que le site utilise est Joomla 3.x, merci d'avance.

Je suis sur un MacBook Air El Capitan, aura besoin aussi de travailler sur Linux CentOS

Répondre

1

utiliser. Il supprimera STDOUT et STDERR et retournera immédiatement sans attendre la fin de la commande.

$command = '/usr/local/bin/node main.js > /dev/null 2>&1';

+0

Salut, merci pour cela, j'essayé d'utiliser nohup, mais je reçois l'erreur suivante: nohup: ne peut pas se détacher de la console: ioctl inappropriée pour l'appareil –

+1

Salut, je viens d'utiliser cela et cela a fonctionné, avéré que je ne gérais pas le stdout correctement, donc ça laissait PHP suspendu. Merci beaucoup! –