запускать команды каждое количество секунд

Я хочу запускать SQL-запрос каждый день.

Сейчас я читаю о sleep функция.

Я понимаю, что сценарий запускается до тех пор, пока не дойдет до функции сна, а затем поспит несколько секунд, а затем снова проснется, поэтому я сделал для тестирования этот код:

for ($i = 1; $i < 3; $i++) {
echo date("i:s");
sleep(10);
}

Проблема в том, что я не получаю никакого вывода, пока не пройду через 20 секунд.

И мне это не нужно, мне нужно, чтобы скрипт запускался, чем спал 10 секунд, а потом снова запускался?

Из того, что я понимаю, это происходит только с выходными данными, я имею в виду, что поведение приведенного выше сценария состоит в том, чтобы отображать эхо на первой итерации, но сохранять выходные данные, а затем, когда все два раза превышают выходные.

Так что, если я прав, если я запускаю SQL-запрос, он запускает первую итерацию, а затем спит 10 секунд, а затем снова запускается, да?

Также у меня есть вопрос, что произойдет, если я выйду из страницы, сценарий все еще будет работать? или когда я покидаю страницу, убить сценарий?

Я хочу запустить что-то вроде этого:

function delPosts () {
sleep(24 * 60 * 60);
$mysqli->query('DELETE FROM posts WHERE date < "SOME DATE"');
delPosts();
}
delPosts();

Танки за помощь

0

Решение

Что ты должен делать:

Вам не нужно связываться со сном и т. Д.

Вместо этого просто поместите полное действие запроса в сценарий, который не требует взаимодействия с пользователем. Закодируйте информацию и храните ее НЕ в веб-каталоге с максимально возможными заблокированными разрешениями.

Чтобы запускать запрос mysql (например, в скрипте PHP) каждый день, вам, вероятно, следует использовать задание cron.

Как настроить Cron Jobs:

На Linux-машине вы можете настроить это, изменив / etc / crontab. В основном crontab контролирует, что и когда запускать в автоматическом цикле. (Это рабочие места cron)

Чтобы запускать скрипт (/home/user/bin/runQuery.php) каждые 5 минут, добавьте эту строку в crontab:

*/5 * * * * php /home/user/bin/runQuery.php

(может потребоваться полный путь к php)

Вот что происходит:

MIN HOUR DOM MON DOW /path/to/script.php
  • MIN = «Минута» (от 0 до 59)
  • ЧАС = «Час» (от 0 до 23)
  • DOM = «День месяца» (1-31)
  • MON = «Месяц» (1-12)
  • DOW = «День недели» (0-6)

Вот некоторые другие действительно практические примеры:
http://www.thegeekstuff.com/2009/06/15-practical-crontab-examples/

3

Другие решения

Это очень легко. вам просто нужно использовать цикл do-while вместо цикла for.
как это

$i=0;
do{
echo date("i:s");
sleep(10);
}while($i>=3);

Вот так ваша проблема будет решена.

0