En PHP, je veux mettre un nombre de secondes à chaque itération de la boucle.
for ($i=0; $i <= 10; $i++) {
$file_exists=file_exists($location.$filename);
if($file_exists) {
break;
}
//sleep for 3 seconds
}
Comment puis-je faire ceci?
Utilisez la fonction PHP sleep()
. http://php.net/manual/en/function.sleep.php .__ Ceci arrête l'exécution de la boucle suivante pour le nombre de secondes indiqué Donc quelque chose comme ça
for ($i=0; $i <= 10; $i++) {
$file_exists=file_exists($location.$filename);
if($file_exists) {
break;
}
sleep(3); // this should halt for 3 seconds for every loop
}
Je vois ce que vous faites ... votre retarder un script pour vérifier constamment un fichier sur le système de fichiers (un fichier en cours de téléchargement ou en cours d'écriture par un autre script, je suppose). C'est une mauvaise façon de le faire.
Vous pouvez utiliser Ajax. Et utilisez un délai d’appel pour appeler votre script PHP toutes les quelques secondes. Cela évitera le chargement lent du script. Et vous pouvez également continuer à le faire constamment (le courant de la boucle ne fonctionnera que pendant 33 secondes, puis s’arrêtera).
Vous pouvez utiliser une base de données. Dans certains cas, l'accès à la base de données est plus rapide que l'accès au disque dur. Surtout avec les vues et la mise en cache. Le script créant le fichier/chargeant le fichier peut définir un indicateur dans une table (par exemple, file_exists) et vous pouvez ensuite avoir un script qui vérifie ce champ dans votre base de données.
Vous pouvez utiliser sleep(3)
qui dort le fil pendant 3 secondes.
Correction Les méthodes de sommeil dans php sont en secondes .
Les lièvres sont deux façons de dormir en script php pendant un certain temps. Lorsque vous avez votre code et que vous souhaitez suspendre le script pendant un certain temps, utilisez ces fonctions . Dans ces exemples, t la première partie de code sera exécuté à l'exécution du script et la deuxième partie de code sera fait mais avec un retard.
Exemple:
echo "Message 1";
// The first part of code.
$timeInSeconds = 3;
sleep($timeInSeconds);
// The second part of code.
echo "Message 2";
De cette façon, il est possible de dormir le script php pendant 3 secondes. En utilisant cette fonction, vous pouvez mettre le script en veille pendant un nombre entier (entier) de secondes.
Exemple:
echo "Message 1";
// The first part of code.
$timeInMicroSeconds = 2487147;
usleep($timeInMicroSeconds);
// The second part of code.
echo "Message 2";
Vous pouvez utiliser cette fonction si vous souhaitez mettre en veille php pour des valeurs de temps inférieures à secondes (float). Dans cet exemple, j'ai mis le script en veille pendant 2 487 147 secondes.
Avez-vous envisagé d’utiliser un script Daemon PHP avec supervisorD . Je l'utilise dans plusieurs tâches qui doivent être exécutées tout le temps.
Le piège est de s'assurer que chaque fois que vous exécutez votre script, vous vérifiez les ressources en mémoire. Si sa valeur est trop élevée, arrêtez le processus et laissez-le redémarrer à nouveau.
J'ai utilisé avec succès ce processus pour toujours vérifier les enregistrements de base de données pour les tâches à traiter.
C'est peut-être exagéré mais mérite d'être considéré.