php cron через указанное время - PullRequest
2 голосов
/ 31 октября 2011

У меня нет сервера, поэтому у меня нет доступа к crontab.Я думаю об использовании сценария PHP, чтобы проверить текущее время и сколько времени прошло.Например, я запускаю скрипт, он сохраняет текущую дату в MySQL и проверяет, прошло ли 30 дней.Если так, делайте мои вещи.

Можно ли сделать все это без MySQL?И, конечно, это только мое мышление, я еще не пробовал.

Ответы [ 5 ]

2 голосов
/ 31 октября 2011

Продолжение работы скрипта:

Проблема в том, что вы должны либо долго поддерживать этот скрипт (что не нравится PHP), либо вам придется вручную запускать этот скрипт каждый день или что угодно. Одна вещь, которую вы могли бы сделать, это написать скрипт для запуска на локальном компьютере, который обращается к этому PHP-скрипту (например, с помощью инструмента командной строки 'wget') каждую минуту, час или как угодно.

Если вы хотите иметь долгосрочный скрипт, вам нужно будет использовать: http://php.net/manual/en/function.set-time-limit.php. Это позволит вам выполнить скрипт гораздо дольше.

Как отмечается в другом ответе, существуют также такие сервисы: https://stackoverflow.com/questions/163476/free-alternative-to-webcron

Нужен ли MySQL?

Что касается того, нужен ли вам MySQL - определенно нет, хотя это неплохой вариант, если он у вас есть. При необходимости вы можете использовать файл (http://php.net/manual/en/function.fopen.php) или даже SQLite (http://php.net/manual/en/book.sqlite.php), который является файловой базой данных SQL.

1 голос
/ 31 октября 2011

Взгляните на модуль Drupals Poormanscron: http://drupal.org/project/poormanscron. Из текста введения:

Модуль вставляет небольшое количество JavaScript на каждой странице вашего сайта, что при определенном количествевремя, прошедшее с момента последнего запуска cron, вызывает AJAX-запрос для запуска задач cron.

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

1 голос
/ 31 октября 2011

Как я понимаю, вы можете запускать только php-скрипты, задействованные по запросу пользователя.

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

0 голосов
/ 31 октября 2011

Вы можете использовать webcron (в основном cronjob на другом сервере, который вызывает ваш скрипт в указанное время) https://stackoverflow.com/questions/163476/free-alternative-to-webcron

0 голосов
/ 31 октября 2011

Вам понадобится какое-то постоянное хранилище, но простой файл должен сработать.Попробуйте и посмотрите, как вы поживаете.:) Вернись за помощью, если вы застряли.Вот несколько советов, с которых можно начать:

...