Il existe le planificateur de tâches de Windows qui est très simple à utiliser. Je ne pense pas que vous obtiendrez une résolution de 10 secondes par 10 secondes Vous devrez probablement le programmer par minute.
Vous pouvez également programmer un élément du planificateur de tâches (ou cron, pour linux) pour l'exécuter, disons 3-4 fois de suite, toutes les minutes :
for($x = 0; $x < 4; $x++) {
yourFunction();
sleep(10);
}
Ainsi, vous avez un script qui va l'exécuter 4 fois par minute, mais pas toutes les 10 secondes précisément. Rappelez-vous que si vous l'exécutez 6 fois toutes les 10 secondes, cela fera plus de 60 secondes puisque votre script prendra aussi du temps pour s'exécuter, et vous aurez un chevauchement.
Si vous utilisez la méthode du planificateur de tâches ou la méthode ci-dessus, j'écrirais un "verrou" de sorte que si le planificateur de tâches exécute un script précédemment lancé, un secondaire ne sera jamais exécuté, comme par exemple :
if(is_readable('is_running')) {
die("Already have one running");
}
file_put_contents('is_running', date('r'));
// at the end of the script, remove is_running since it won't be running anymore
unlink('is_running');
En date('r')
Ainsi, en cas de problème, vous pouvez voir la dernière fois que le verrou a été écrit en l'ouvrant dans un éditeur de texte. Encore une fois, à moins de faire cela très précisément, vous pourriez vous retrouver avec (1) un script qui tourne sauf une fois toutes les minutes, il y aura deux script en cours d'exécution, ce qui pourrait conduire à une lente avalanche d'un grand nombre de processus (2) si vous utilisez le verrou, il pourrait finir par tourner toutes les 10 secondes, toutes les deux minutes, dans le cas où le verrou dure un clin d'œil plus de 60 secondes... (3) qui sait quoi d'autre ... C'est pourquoi dans mon exemple, je suggère de l'exécuter 3-4 fois toutes les minutes, séparées par un intervalle de 10 secondes si vous avez vraiment besoin de l'exécuter plus d'une fois par minute (cela peut TOUJOURS causer des problèmes si votre script prend un temps relativement long, donc encore une fois... ).
Une autre méthode, qui est peut-être encore plus sujette à des problèmes, consiste à utiliser un script PHP de longue durée sur votre serveur Windows qui fait quelque chose comme :
while(1) {
yourFunction();
sleep(10);
}
Toutefois, cette méthode n'est pas fiable, car le processus volonté tombe en panne (meurt) occasionnellement, vous devrez vous assurer qu'il démarre au démarrage, et également gérer une boîte noire exécutant votre ligne de commande script tout le temps sur le serveur. De plus, dans le cas d'un processus de longue durée, vous pourriez avoir besoin d'un script secondaire pour vérifier qu'il fonctionne correctement toutes les minutes ou presque.
Enfin, et j'ai beaucoup plus utilisé cette méthode sur des serveurs qui sont va être lourdement chargé... Par exemple, disons que vous savoir vous recevez plus d'un coup toutes les 10 secondes, vous pourriez introduire une probabilité dans le système d'information. tous php script (par exemple, en tant qu'inclusion, utilisez quelque chose comme) :
if(mt_rand(1,100) < 10) {
yourFunction();
}
Ou ma méthode préférée sur les sites très chargés est d'utiliser une mémoire tampon comme apc, redis, ou memcache (que j'aurais déjà utilisé, puisque c'est un site très chargé) et de simplement stocker le temps de "dernière exécution" et si c'était il y a plus de 10 secondes, mettre immédiatement à jour le temps d'exécution et ensuite exécuter la fonction, pseudo e.x. :
if($yourStore->get('last_garbage_collection') < (time() - 10)) {
$yourStore->set('last_garbage_collection', time());
yourFunction();
}
La dernière heure d'exécution peut également être stockée dans mySQL, Sessions (pour une collecte de déchets par utilisateur, voir script, quoi que ce soit), ou autre.
Donc, en ce qui concerne Windows, il n'y a pas vraiment de solution de rechange. grand de faire quoi que ce soit de tout cela. Ma suggestion serait sans aucun doute un planificateur de tâches/cron qui s'exécuterait toutes les minutes. vraiment (par exemple, si vous avez besoin de le vérifier toutes les 10 secondes ?), ou la dernière méthode avec un temps de ramassage des déchets, si vous avez besoin d'un temps de ramassage des déchets. doit ont une résolution de 10 secondes, il est un site très chargé avec des dizaines de requêtes par seconde, ou plus, en permanence, et vous êtes conscients qu'ils peuvent ne pas fonctionner tout le temps, se casser, ou pire.