Я хочу запускать 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();
Танки за помощь
Что ты должен делать:
Вам не нужно связываться со сном и т. Д.
Вместо этого просто поместите полное действие запроса в сценарий, который не требует взаимодействия с пользователем. Закодируйте информацию и храните ее НЕ в веб-каталоге с максимально возможными заблокированными разрешениями.
Чтобы запускать запрос 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
Вот некоторые другие действительно практические примеры:
http://www.thegeekstuff.com/2009/06/15-practical-crontab-examples/
Это очень легко. вам просто нужно использовать цикл do-while вместо цикла for.
как это
$i=0;
do{
echo date("i:s");
sleep(10);
}while($i>=3);
Вот так ваша проблема будет решена.