Есть скрипт рассылки по подписчикам. По условиям хостинга, рассылку нужно ограничивать по числу отправляемых писем в день и размазывать по времени. В итоге скрипт рассылки работает по крону, учитывая требования. Все прекрасно, кроме того, что нужно каждый раз перед рассылкой включать на сервере запуск скрипта по крону, а после окончания рассылки - выключать. Потому что рассылка делается не чаще, чем раз в месяц и нет никакого смысла всё остальное время отрабатывать скрипту регулярно раз в час.
Можно ли как-то инициировать запуск скрипта по крону из php-скрипта? Кнопка "отправить рассылку" включает запуск по крону. Закончилась рассылка - отключился запуск по крону.
ну вобщем, если на сервере установлена библиотека SSH2, то можно обращаться к крону из php-скриптов. Есть куча функций и сделать можно всё что угодно. В том числе создать задачу по крону. Например здесь ruseller.com/lessons.php?id=1153&rub=37 разобран подробный пример.
Хостер сказал, что запуск раз в час скрипта, который выполняет одну простейшую команду - вообще не проблема. В контексте нагрузки. Так что, можно не заморачиваться.
Андрей: вопрос не в этом. У нас есть необходимые флаги, которые говорят скрипту делать рассылку или нет. Вопрос в том, что скрипт в любом случае запускается. регулярно. хотя бы ради того, чтобы проверить флаг. Сервер напрягается каждый час... каждый день. Пусть это мелочь, но я и в ней не вижу смысла, коль скоро работа скрипта нужна так редко.
NataliaCh: варианта 2:
1. скрипт раз период проверяет, надо ли ему что-то делать. если надо - делает это, если не надо - завершается
2. скрипт запускается вручную.
Андрей: погуглила и нашла. можно писать любые shell-команды из php-скриптов, если на серваке есть библиотека SSH2.
Но я в итоге решила не заморачиваться, поскольку нагрузка на сервер ничтожна и можно закрыть глаза на то, что там что-то периодически запускается.
каким образом наличие флага включит запуск скрипта по крону?
Понимаете, скрипт по крону отключен по умолчанию.
Использую интерфейс хостера. Перед рассылкой активизирую задачу в планировщике, которая запускает скрипт рассылки раз в час. После окончания рассылки также ручками эту задачу отключаю. Если не отключать, то скрипт так и будет пахать каждый день раз в час. Он конечно ничего уже рассылать не будет, этот момент, разумеется, продуман. Но сам факт регулярного запуска некоей задачи, которая не нужна, меня напрягает. А следующая рассылка может только через полгода будет.
NataliaCh: включите его "по умолчанию". И в скрипт в начало добавьте проверку флага. Флаг установлен - рассылаете почту. Не установлен - ничего не делаете