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