Подтвердить что ты не робот

Задержка сна PHP

В PHP, я хочу поставить несколько секундных задержек на каждой итерации цикла.

for ($i=0; $i <= 10; $i++) {
    $file_exists=file_exists($location.$filename);
    if($file_exists) {
        break;
    }

    //sleep for 3 seconds
}

Как я могу это сделать?

4b9b3361

Ответ 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 для целого числа (целое) секунд.

  1. Использование функции 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 секунды.