Comment garder un persistante script PHP en cours d'exécution?
J'ai un script PHP qui est à l'écoute pour la réception des demandes de socket, etc. J'ai besoin de ce script pour être en permanence en cours d'exécution (il s'exécute dans une boucle infinie) sur le serveur.
Comment puis-je lancer et de gérer ce processus? J'ai essayé juste de commencer par SSH putty, mais dès que la connexion SSH fois le script meurt.
double possible de Exécuter un script php en tant que processus de démon
Beaucoup de bonnes infos: stackoverflow.com/search?q=php+démon
cochez la case "écran" utilité aussi bien pour détacher votre session ssh (et de le reconnecter à nouveau plus tard si vous le souhaitez)
Si vous avez une longue course script php comme une solution, vous devez disposer d'un universitaire problème, un étrange concours de circonstances, ou sur une route à une meilleure solution lorsque vous obtenez votre tête autour de lui. De retour sur le sujet, à un niveau d'abstraction vous voulez quelque chose à gérer vos processus php pour redémarrer quand il meurt, va oom, la lune changements d'alignement etc. (ce gestionnaire doit pas être un autre script php) 🙂
Beaucoup de bonnes infos: stackoverflow.com/search?q=php+démon
cochez la case "écran" utilité aussi bien pour détacher votre session ssh (et de le reconnecter à nouveau plus tard si vous le souhaitez)
Si vous avez une longue course script php comme une solution, vous devez disposer d'un universitaire problème, un étrange concours de circonstances, ou sur une route à une meilleure solution lorsque vous obtenez votre tête autour de lui. De retour sur le sujet, à un niveau d'abstraction vous voulez quelque chose à gérer vos processus php pour redémarrer quand il meurt, va oom, la lune changements d'alignement etc. (ce gestionnaire doit pas être un autre script php) 🙂
OriginalL'auteur Andy Hin | 2011-01-17
Vous devez vous connecter pour publier un commentaire.
Cela va démarrer le scriptin l'arrière-plan
vous pouvez le vérifier avec
Comme Patrick a mentionné dans les commentaires ci-dessous, il n'y a pas de délai maximal d'exécution pour l'exécution des scripts PHP en ligne de commande.
myscript.php
fonctionnera indéfiniment.set_time_limit
.il n'y a pas de limite de temps lorsque vous exécutez à partir de la ligne de commande
bon à savoir!
Ce n'est pas vraiment stable depuis le script peut mourir d'erreur ou de fuite de mémoire et de ne pas commencer de nouveau.
C'est un travail pour moi, Mais après le redémarrage du serveur j'ai besoin de configurer manuellement est-il de toute façon à définir après le redémarrage du script serveur démarre automatiquement?
OriginalL'auteur ActionOwl
Exécuter le script en arrière-plan via SSH, comme expliqué ici: Prise en ssh pour exécuter une commande en arrière-plan sur l'ordinateur cible
Je puis vous suggérons d'avoir un moyen de surveiller si le script est toujours en cours d'exécution. Vous avez mentionné votre script écoute sur un port, vous pourriez peut-être écrire un script qui vérifie à chaque fois dans un certain temps pour voir si le port est ouvert.
Une autre option est de surveiller l'id de processus. Lorsque le script exécute pour la première fois, vous pouvez récupérer l'id de processus à l'aide de
getmypid
de la fonction et de le stocker dans un fichier. Vous pouvez ensuite vérifier périodiquement si elle est toujours en cours d'exécution à l'aide deps -p 1234
.Une autre solution: Comment vérifier si un script php est toujours en cours d'exécution
OriginalL'auteur Christian Joudrey
Vous pouvez utiliser le navigateur si vous utilisez ignore_user_abort() et set_time_limit()
OriginalL'auteur AntonioCS
Nous avons récemment eu un besoin similaire. Nous sommes en cours d'exécution une Ubuntu 14.04 LTS serveur, donc créé une
upstart
processus pour démarrer le processus de démarrage comme et redémarre si il la quitte pour une raison quelconque.Il est fonctionné très bien pour nous, y compris le redémarrage automatique; notre processus de longue perd finalement la connexion MySQL. Le script gère l'exception et des sorties, avant la
upstart
processus redémarre automatiquement le processus. Nous avons également ajouté uncron
script pour surveiller le processus, juste au cas où il y a une plus grande erreur queupstart
donne jusqu'à essayer de redémarrer; nous avons un fail-safe dans le cas d'un simple redémarrage ne résout pas le avant d'erreur.salut @KDrewiske pouvez-vous donner des exemples de code ou quelque chose qui peut aider les peuples qui sont à la recherche pour le même problème. Je suis l'un d'eux 🙂
Je viens de recherche pour "ubuntu arriviste exemple" et a obtenu un bon guide de Numérique de l'Océan. digitalocean.com/community/tutorials/.... Il traite de beaucoup plus que ce que mon exemple, pourrait fournir. Le script PHP qui s'exécute est juste quelque chose qui pourrait être appelé via l'interface CLI - contenant simplement un code à un certain temps en boucle.
apprécie vraiment votre aide, merci, et c'est exactement ce dont j'avais besoin. J'ai aussi regardé quelques tutos de ce genre et le meilleur que j'ai trouvé Ce Lien j'espère que cela aidera quelqu'un, tout comme il m'a aidé.
OriginalL'auteur KDrewiske
Vous pouvez l'exécuter en ligne de commande. Vous devez ajouter l'option "exécuter en arrière-plan" est utilisé afin de faire en sorte que le système ne peut pas attendre pour que le script complet. En fait, vous mettez un & à la fin de votre commande en ligne.
Une chose que vous devriez vraiment faire est de créer un fichier ini script shell qui exécute le script PHP sur le démarrage en cas de redémarrage.
OriginalL'auteur dqhendricks
Si longue fiabilité est le but, supervisord est parfait pour ça!
Je suis tombé sur elle par https://lornajane.net/posts/2012/watch-over-long-running-processes-with-supervisord
Edit: Cet outil a pour but de résoudre le problème posé. L'objectif est de garder le long processus en cours d'exécution en cours d'exécution. Un commentaire de rappeler (valablement) que la solution retenue ne sera pas fiable, que le script sera probablement accident, etc. Donc la solution est d'utiliser un outil "d'engager et de gérer ce processus", qui a également le maintient en vie. Cet outil est exactement cela: il commence le processus en arrière-plan et maintient en cours d'exécution.
OriginalL'auteur legoblocks
Pourquoi pas une boucle do while?
do { /* your code */} while $something == 0;
Puis quand quelque chose se produit pour déclencher l'arrêt du script, $quelque chose à une valeur autre que 0.
$something = 0;
est une mission et non pas un test vrai ou faux .. 😉 Mais je suis sûr que vous saviez que .. une Autre chose est que si vous avez de la base de quoi que ce soit sur une boucle de scénario, à moins que votre logique ( script / fonction ... quoi que ) bloque sur quelque chose - les boucles tout en "inactif" ne sera pas ralenti du tout, mais de forcer le processeur du serveur de gaspiller de précieuses ressources sur un serveur ou tout au moins de serveur virtuel à l'échelle de la portée.OriginalL'auteur cwade12c