2009-11-26 2 views
1

J'ai une question UNIX ... J'ai un script PHP que je cours dans le terminal qui analyse un tas d'images et les met dans le base de données. Ce script a déjà été écritScript qui va quitter toutes les 5 minutes puis se renouveler où il s'est arrêté

En raison de restrictions sur mon hébergement (Bluehost), je ne peux pas exécuter un processus pendant plus de 5 minutes. Je me demande comment l'installer pour sortir du script toutes les 5 minutes puis peut-être dormir un peu, puis se rouvrir où il s'est arrêté.

Je prévoyais d'utiliser un cronjob pour relancer la commande, mais comment puis-je reprendre où je me suis arrêté?

Merci, Matt Mueller

Répondre

0

changer votre fournisseur d'hébergement ....

écrire un script pour vider tous les noms de fichier d'image dans un fichier texte. Définissez le script pour lire le fichier texte et supprimez le nom de fichier du fichier texte chaque fois que vous avez terminé le traitement de cette image. Chaque fois que le processus est tué, il devrait être sûr de redémarrer.

+0

Que suggérez-vous? J'ai considéré cela. – Matt

+0

vouliez-vous que quelqu'un écrive réellement le script? –

+0

Non, je pense que ça devrait aller. Pour une raison quelconque, je viens de voir "Changer votre fournisseur d'hébergement ..." C'est ce que j'ai répondu initialement. – Matt

1

Vous pouvez avoir une table dans la base de données ou un fichier externe qui vous indique où vous vous étiez arrêté.

+0

Yah. C'est un peu ce que je pensais. Merci! – Matt

3

Voici quelques façons que je peux voir de le faire (ce printemps immédiatement à l'esprit - il peut être d'autres):

  1. Comme vous ajoutez les images à votre base de données, les déplacer vers un autre emplacement sur la disque. Ensuite, votre script ne les verra pas la prochaine fois qu'il fonctionnera. Lorsque vous ajoutez les images à votre base de données, renommez-les de xx.jpg en xx.jpg-processed (par exemple). Ensuite, demandez à votre script d'ignorer ceux qui ont été traités. Conservez la liste des fichiers que vous avez déjà traités et ne les retraitez pas.

  2. Enregistrez le nom de fichier du fichier source réel dans la base de données avec l'image et interrogez la base de données pour éviter toute nouvelle importation.

+0

Je pense que c'est mieux que ma réponse ... –

0

Essayez CryoPID. CryoPID vous permet de capturer l'état d'un processus en cours sous Linux et de l'enregistrer dans un fichier.

Ce fichier peut ensuite être utilisé pour reprendre le processus plus tard, soit après un redémarrage, soit même sur une autre machine.

Questions connexes