У меня есть PHP скрипт, который читает один файл через http (файл находится в другом домене). Я хотел бы прочитать этот файл только один или два раза в день, вместо того, чтобы подключаться к нему каждый раз, когда сайт обновляется. Есть ли другой способ, чем делать это с помощью cron? Я не хочу использовать cron, потому что я предпочитаю настроить это поведение в самой script.. поэтому он является гибким, поэтому я могу использовать его в любом месте, не настраивая cron каждый раз. спасибо
Как запустить PHP скрипт в определенный интервал (например, один раз в день)?
Ответ 1
Если вы не можете или не хотите использовать use cron, и это нормально обновлять его только при доступе к странице. Вы можете кэшировать результат HTTP-запроса и обновлять его только на странице, загружая его, если кеш старше дня или любого другого интервала, который вы выберете.
Ответ 2
Я делал это в прошлом, когда у меня не было доступа к cron:
$lastRunLog = '/path/to/lastrun.log';
if (file_exists($lastRunLog)) {
$lastRun = file_get_contents($lastRunLog);
if (time() - $lastRun >= 86400) {
//its been more than a day so run our external file
$cron = file_get_contents('http://example.com/external/file.php');
//update lastrun.log with current time
file_put_contents($lastRunLog, time());
}
}
Ответ 3
Вы также можете использовать веб-сайт Cron, если вы хотите поразить сайт по временному интервалу.
Ответ 4
Вы даже можете использовать таблицу базы данных - очень простую по структуре, id, date, script url и все, что вам нужно - и добавлять строку каждый раз при запуске script.
Затем перед запуском script просто проверьте номера строк за каждый день, который у вас есть.
Ответ 5
Вы можете использовать Cronjob. Затем вы можете запустить php script с помощью командной строки.
php /someplace/somefile.php
Cronjob будет следующим, если вы будете обновлять каждый день.
0 0 * 0 0 php /someplace/somefile.php
Ответ 6
Поскольку вы явно заявляете, что не хотите использовать cron, единственный способ сделать это (без чего-то аналогичного cron) - настроить ваш script как демон. Однако, если вам действительно не нужна гибкость, которую предоставляют демоны, cron намного проще и проще.
Здесь один демон демонстрации.
Ответ 7
Если вы используете дистрибутив Linux с systemd:
Мне нужно было планировать годовые задания, независимо от приложения (в случае перезагрузки системы или что-то в этом роде), и мне было предложено использовать таймеры systemd. В Arch Страница Wiki на нем приводятся некоторые примеры.
Ответ 8
Если вы находитесь в среде * nix, вы можете использовать задания cron
Ответ 9
Что случилось с cron?
У вас есть пара вариантов с cron - ваш php может быть вызван интерпретатором PHP в командной строке, или вы можете использовать wget или fetch или эквивалент для вызова вашего PHP на сервере.
В общем, PHP, выполняемый в контексте веб-сервера, имеет ограничение по времени на выполнение, поэтому в общем случае вы не можете настроить "фоновые" потоки PHP для создания "позже".