11
votes

Vérifiez si un script PHP est toujours en marche

J'ai un script qui écoute un serveur Jabber et répond en conséquence. Bien que ce ne soit pas censé s'arrêter, la nuit dernière, elle l'a fait. Maintenant, je veux exécuter un travail cron chaque minute pour vérifier si le script fonctionne et le démarre sinon.

La question est, comment puis-je vérifier si un script particulier est toujours en marche?

Certaines solutions ont été postées ici , mais ce sont tous pour Linux, alors que je recherche une solution Windows. Des idées s'il vous plaît? Merci.


0 commentaires

3 Réponses :


4
votes

Une solution de contournement rapide et sale pourrait être pour le script de mettre à jour une ligne dans une base de données avec une colonne de date définie sur Current_TimeStamp. Avoir le deuxième chèque de script cron si l'horodatage de cette ligne est récent.


2 commentaires

Je peux utiliser cette solution de contournement en dernier recours. Y a-t-il un script Windows Shell qui fera le travail?


Les scripts Windows Shell sont moins conviviaux que JCL et qui disent quelque chose, alors j'ai peur de ne pouvoir vous aider là-bas. Vous pouvez essayer de regarder dans PowerShell, car cela semble être utile.



0
votes

Voici ce que je fais habituellement:

  1. Créer un répertoire d'état, par exemple: / Data / Statut /
  2. sur mon script, avez-vous vérifier si le fichier d'état est existant
    1. si cela existe, quittez le script
    2. S'il n'existe pas, continuez le processus

      Cependant, il y a un problème dans ce domaine: que si le script meurt et qu'il n'a pas supprimé le fichier d'état?

      Vous pouvez ajouter un peu de sauvegarde chèque comme ceci:

      1. Pour chaque minute, Mettez à jour le fichier d'état
      2. Pour chaque démarrage de Cron, vérifiez si le fichier d'état est mis à jour par exemple: il y a 10 ou 30 minutes (nous pouvons supposer que notre script cron est meurt), nous pouvons commencer le script cron.

0 commentaires

0
votes

J'ai eu le même problème et j'ai résolu avec ce code:

$i++
if( $i%100 == 0)
    file_put_contents("status.txt","ping");


2 commentaires

Comment cela est efficace que la mise à jour d'un champ d'horodatage dans une base de données? Je pense que la mise à jour d'un dB est meilleure pour elle a ses propres mécanismes de verrouillage. Alors que nous pouvons vous retrouver dans une impasse si nous dépendons d'un fichier. S'il vous plait corrigez moi si je me trompe.


J'ai couru beaucoup de scripts sur mon ordinateur portable. Pour accéder à MySQL de mon bureau, je devrais installer PHP. Cela devient inutile lorsque je travaille avec juste un fichier texte. Mais, chaque cas doit être traité séparément.