2010-09-09 6 views
0

Je suis en charge d'une imprimante, alors j'ai écrit un script qui s'exécute toutes les 5 minutes et détermine si l'imprimante a du papier. Si ce n'est pas le cas, le script m'envoie un texto. Le problème est que, si je suis occupé, et que je ne peux pas remplir l'imprimante, je ne veux pas que le script continue à m'envoyer des textos toutes les 5 minutes. Y a-t-il un moyen de le forcer à m'envoyer au maximum 1 texto toutes les 8 heures, pour m'assurer que le script ne m'envoie pas deux fois le texte pour la même situation hors-papier? La seule chose à laquelle je peux penser actuellement est de créer une base de données de fois que je reçois des textes, puis de m'assurer que la plus récente n'était pas trop récente, ou de créer un fichier local avec l'heure la plus récente.cronjob retarder basé sur la sortie PHP

Merci!

Répondre

3

Vous devez stocker quelque part le fait qu'il contient du texte et quand ce dernier s'est produit. Vous pouvez le faire en utilisant un fichier simple et en lisant la date de modification des fichiers pour voir quand le texte a été envoyé pour la dernière fois ou vous pouvez utiliser une base de données.

+0

-1: en utilisant un nom de variable complique le stockage des données du système a déjà dans le temps de modification du fichier – symcbean

+0

@symcbean Bon Point- - édité –

0

En supposant que le script qui envoie le SMS est PHP, utilisez quelque chose comme ceci. Peut probablement trouver une façon plus propre de faire cela, mais c'est juste pour vous montrer la logique qui est nécessaire.

<? 

/* 
* Replace outOfPaper()/sendSms() with the actual logic of your script 
*/ 
$statusFile = './lastsms'; 

if(outOfPaper() && (is_file($statusFile) && (filemtime($statusFile) < time()-((8*60)*60)))){ 
    sendSms('+4412345678','Printer out of paper'); 
    touch($statusFile); 
} 

?>