Задержка сна PHP
В PHP, я хочу поставить несколько секундных задержек на каждой итерации цикла.
for ($i=0; $i <= 10; $i++) {
$file_exists=file_exists($location.$filename);
if($file_exists) {
break;
}
//sleep for 3 seconds
}
Как я могу это сделать?
Ответы
Ответ 1
Используйте функцию PHP sleep()
. http://php.net/manual/en/function.sleep.php
Это останавливает выполнение следующего цикла для заданного количества секунд. Так что-то вроде этого
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
}
Ответ 2
Я вижу, что вы делаете... задерживая script, чтобы постоянно проверять файл в файловой системе (тот, который загружается или записывается другим script, я предполагаю). Это НЕОБХОДИМЫЙ способ сделать это.
- Ваш script будет работать медленно. Удушение сервера, если несколько пользователей работают с этим script.
- Ваш сервер может отключиться для некоторых пользователей.
- Доступ к жесткому диску - дорогостоящий ресурс.
- Есть лучшие способы сделать это.
Вы можете использовать Ajax. И используйте таймаут, чтобы называть ваш PHP script каждые несколько секунд. Это позволит избежать медленной загрузки script. А также вы можете продолжать делать это постоянно (текущий цикл будет работать только 33 секунды, а затем остановится).
Вы можете использовать базу данных. В некоторых случаях доступ к базе данных происходит быстрее, чем доступ к жесткому диску. Особенно с видами и кешированием. script, создающий файл/загрузку файла, может установить флаг в таблице (т.е. File_exists), а затем вы можете иметь script, который проверяет это поле в вашей базе данных.
Ответ 3
Вы можете использовать sleep(3)
, который спит в течение 3 секунд.
Метод коррекции в php в секундах.
Ответ 4
Рассматривали ли вы использование PHP Daemon script с помощью supervisorD. Я использую его в нескольких задачах, которые должны выполняться все время.
Уловка гарантирует, что каждый раз, когда вы запускаете свой script, вы проверяете ресурсы памяти. Если он слишком высок, остановите процесс, а затем снова запустите его снова.
Я успешно использовал этот процесс, чтобы всегда проверять записи базы данных для обработки задач.
Это может быть излишним, но стоит подумать.
Ответ 5
Заяц - это два способа спать PHP скрипт в течение некоторого периода времени. Когда у вас есть код и вы хотите приостановить script, работающий некоторое время, используйте эти функции.
В этих примерах t первая часть кода будет выполнена в script run и , вторая часть кода будет выполнена, но с задержкой по времени.
- Использование функции sleep().
Пример:
echo "Message 1";
// The first part of code.
$timeInSeconds = 3;
sleep($timeInSeconds);
// The second part of code.
echo "Message 2";
Таким образом, можно спать php script в течение 3 секунд. С помощью этой функции вы можете спать script для целого числа (целое) секунд.
- Использование функции usleep().
Пример:
echo "Message 1";
// The first part of code.
$timeInSeconds = 2.487;
$sleepTime = $timeInSeconds * 1000000;
usleep($sleepTime);
// The second part of code.
echo "Message 2";
Вы можете использовать эту функцию, если хотите сбросить php для меньших значений времени, чем во втором (float). В этом примере я поставил script на спящий режим на 2.487 секунды.