Лучший способ периодически выполнять скрипт PHP?

Я бы, наверное, нашел способ сделать это, если бы у меня был полный доступ к серверу, однако проблема в том, что это просто хостинг, который не оставляет мне ничего, кроме доступа по FTP.

Я хотел бы периодически запускать сценарий PHP для проверки устаревшего / поврежденного содержимого, агрегирования нового содержимого, удаления файлов, которые не используются и т. Д., Однако выполнение сценария может занять до 60 секунд (из-за объединения содержимого), и я чувствую, что задница, чтобы просто выполнить его при обработке запроса первого пользователя, который посещает веб-сайт через час после его обновления:P

Оставлять мой домашний компьютер в режиме 24/7 для планирования запросов не вариант.

5 ответов

Решение

Вы можете использовать онлайн-сервис cron, чтобы притворяться, будто у вас есть доступ к cron.

Создайте php файл с содержимым, которое вы хотели бы выполнить

Бесплатный Cron Интернет-сайт

Настройте бесплатный онлайн-cron на выполнение этого файла каждые x минут.

Не уверен, что это правильный подход, но я обычно запускал скрипт, когда первый пользователь заходит на сайт, а затем отправлял <meta http-equiv="refresh"... пользователю для его браузера, чтобы обновить страницу. Оригинальный скрипт PHP по-прежнему будет работать на сервере, но пользователь больше его не увидит.

В основном, что-то вроде:

if( check if the user is the first visitor today ) {
    set_time_limit(0);
    echo "<meta http-equiv='refresh' content='1;url=..." />"; // put your site baseurl in here

    ... run your scripts here
}

Просто идея. Может не сработать. Просто попробуйте.

Вы можете обойтись без cron, используя следующее решение (только PHP): http://a32.me/2012/01/do-php-cron-without-cron-available/

Почему ты не используешь

crontab

Посмотрите здесь:

http://en.wikipedia.org/wiki/Cron

Если ваш хостинг-провайдер не предоставляет вам ничего, кроме доступа по FTP, и вы не хотите планировать периодический запрос с другого компьютера, тогда вы ничего не можете сделать. Вам нужно получить лучшую учетную запись хостинга, предпочтительно ту, которая позволяет использовать cron.

Другие вопросы по тегам