Shell используется в cakePHP для запуска отложенных задач вашего приложения. Если вы в первый раз слышите про shell, то вам следует ознакомиться с неплохим мануалом и примерами на официальном сайте cakePHP и уже наконец приобщаться к использованию технологий облегчающих разработку.
Хочу поделиться с Вами решением проблемы использования в shell компонентов, определенных cakePHP, например таких как Email, Controller (ваш или с основы фреймворка) и другие. Надеюсь что этот пост поможет свести к минимуму ваши изыскания на зарубежных форумах хоть какой-то толики информации в такой ситуации... как искала я в свое время...
Итак, хотите сделать рассылку писем по расписанию на кроне или же исполнить функцию, определенную в контроллере через выполнение задач Shell? .. тогда прошу
Все началось с того, чтоб мне следовало сделать автоматическую рассылку писем в назначенное время. Простой Import не сработал для компонента Email для запуска по расписанию на кроне.
Долго проискав по просторам интернета на одном из зарубежных форумов нашла такой вариант решения:
class NpaprojectShell extends Shell{ // чтобы работала рассылка писем через компонент по рассписанию на кроне var $tasks = array('Project', 'DbConfig', 'Model', 'Controller', 'View', 'Plugin'); function main(){ App::import('Component', 'Npamail.Sendmail'); $Sendmail = new SendmailComponent(); // ваш код и собственно отправка письма } }
Таким же образом можно без потери производительности для запуска на кроне импортировать любой элемент, компонент, контроллер и другие объекты. Далее остается только использовать нужные функции, определенные в полученном объекте по вашему усмотрению. Ничего сложного и все будет работать стабильно - не смотря, на то что это одноразовый запуск вручную, или запуск на кроне.
Надеюсь, что эта информация была вам полезна. Хорошего настроения и удачи! пишите код без сучка и задоринки ))
Пока нет коментариев. Будьте первым!