Cakephp Shell Cronjob Контроллер Действие Media Temple Server - PullRequest
1 голос
/ 17 ноября 2009

Я пытаюсь создать работу cron, которая будет отправлять еженедельную рассылку. Я попытался создать задачу оболочки, следуя указаниям Cakephp . Затем я перехожу на задания Media Temple Cron и набираю следующее:

php /home/#####/domains/domain.com/html/cake/console/cake -app /home//#####//domains/domain.com/html/vendors/shells newsletter

Я создал задачу оболочки в папке vendors / shell и назвал ее newsletter.php, а вот код для нее:

class NewsletterShell extends Shell {

    function main() {

    $this->sendEmailTo("Newsletter","subject","email@gmail.com");


    }
}

sendEmailTo - это функция контроллера, которая есть в моем appController, поэтому все мои контроллеры имеют к ней доступ.

Моя проблема - каждый раз, когда запускается Cron Job, я получаю следующее сообщение:

Не удалось открыть входной файл: /home/#####/domains/domain.com/html/cake/console/cake

Я даже дал все консольные файлы (cake.php, cake.bat и т. Д.) 0777 для чтения и записи, а также для vendors / shell / newsletter.php

##### - это номер сайта, который вам дает медиа-храм, но я не совсем уверен, что он правильный. Они показывают пример работы cron, такой как: /home/50838/data/script-name.sh

Итак, мои вопросы:

Правильно ли выполнено мое задание по выпечке тортов, и точно ли я выполняю его как задание cron?

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

Заранее спасибо,

Фабиан

Ответы [ 3 ]

1 голос
/ 17 ноября 2009

Вы можете попробовать var_dump(ROOT) или любую другую Константы определения ядра , чтобы найти ваш каталог. Просто поместите его в метод контроллера где-нибудь, но обязательно удалите его снова. Или, если у вас есть доступ по SSH, введите pwd в командной строке.

Кроме этого, при вызове консольной задачи cake параметр -app должен указывать на каталог app, а не на каталог shells.


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

0 голосов
/ 17 ноября 2009

Дали ли вы файл "cake" в каталоге исполняемых файлов каталога "cake / console", а также cake.php и cake.bat?

Команда cron должна быть:

php /home/#####/domains/domain.com/html/cake/console/cake бюллетень -app /home/#####/domains/domain.com/html/app

0 голосов
/ 17 ноября 2009
ls -l /home/#####/domains/domain.com/html/cake/console/cake

говорит что? задание cron запускается от имени пользователя #####? в противном случае проблема, вероятно, связана с разрешениями для / home / ##### /, проверьте их с помощью

ls -ld /home/#####/
...