РЕДАКТИРОВАНИЕ ЗА 2017 Г. В НИЖНЕЙ ЧАСТИ
Я прочитал следующие записи документа:
http://book.cakephp.org/2.0/en/console-and-shells.html
http://book.cakephp.org/2.0/en/console-and-shells/cron-jobs.html
А также этот вопрос:
Создание заданий Cron в CakePHP 2.x
У меня возникли проблемы с попыткой реализовать две функции задания cron, одна из которых точно такая же, как вопрос о переполнении стека, указанный выше, для отправки тестового электронного письма. Другой, чтобы просто вставить новую строку в мою таблицу "crons". Ни то, ни другое не работает, и я считаю, что именно так я пытаюсь вызвать задания cron. Я не верю, что использую правильный путь.
Консоль/Команда/CronShell.php
class CronShell extends AppShell {
public $uses = array('Cron');
public function trigger() {
$cron = array(
'Cron' => array(
'title' => 'Cron Test'
)
);
$this->Cron->create();
$this->Cron->save($cron);
}
}
Я настроил CronsController.php с приведенным выше кодом как часть действия индекса. Код отлично работает при доступе через контроллер, поэтому проблема связана с заданием оболочки или cron.
Я использовал следующие команды для вызова этого метода как задания cron, но ничего не работало...
***** cd /home1/bhndbrwn/public_html/cake2/app && Console/cake cron trigger
***** cd /home1/bhndbrwn/public_html/cake2/app && Console/cake cronshell trigger
***** cd /home1/bhndbrwn/public_html/cake2/app && Console/cake Cron trigger
***** cd /home1/bhndbrwn/public_html/cake2/app && Console/cake CronShell trigger
***** cd /home1/bhndbrwn/public_html/cake2/app/Console/cake cron trigger
***** cd /home1/bhndbrwn/public_html/cake2/app/Console/cake cronshell trigger
***** cd /home1/bhndbrwn/public_html/cake2/app/Console/cake Cron trigger
***** cd /home1/bhndbrwn/public_html/cake2/app/Console/cake CronShell trigger
Точно так же я попробовал следующую оболочку для отправки тестового письма
Консоль/Команда/EmailShell.php
App::uses('CakeEmail', 'Network/Email');
class EmailShell extends Shell {
public function main() {
$Email = new CakeEmail();
$Email->template('test', 'default')
->emailFormat('html')
->to([email protected])
->from('[email protected]')
->subject('Cron Email')
->send();
} // END MAIN FUNCTION
}
Я снова попробовал следующие команды. Для каждой из этих команд я также попытался удалить имя метода «main» в соответствии с инструкциями документа.
***** cd /home1/bhndbrwn/public_html/cake2/app && Console/cake email main
***** cd /home1/bhndbrwn/public_html/cake2/app && Console/cake emailshell main
***** cd /home1/bhndbrwn/public_html/cake2/app && Console/cake Email main
***** cd /home1/bhndbrwn/public_html/cake2/app && Console/cake EmailShell main
***** cd /home1/bhndbrwn/public_html/cake2/app/Console/cake email main
***** cd /home1/bhndbrwn/public_html/cake2/app/Console/cake emailshell main
***** cd /home1/bhndbrwn/public_html/cake2/app/Console/cake Email main
***** cd /home1/bhndbrwn/public_html/cake2/app/Console/cake EmailShell main
РЕДАКТИРОВАНИЕ 2017 Г. – ВСЕ ЕЩЕ НЕ РАБОТАЕТ
Я обновил свой cron до /home/allfan5/public_html/allfans/app/Console/cake.php -app /home/allfan5/public_html/allfans/app/ test action
У меня есть оболочка под названием TestShell и функция под названием «действие». Функция действия совершенно пуста для тестирования (я также пытался использовать функцию, в которой я отправлял сообщения пользователям по электронной почте, но я получал ошибки, поэтому я создал новую оболочку и полностью пустую функцию, и я получаю ту же ошибку).
Ошибка, которую я получаю сейчас,
2017-10-14 21:34:02 Error: Fatal Error (64): Cannot use ‘String’ as class name as it is reserved in [/home/allfan5/public_html/allfans/lib/Cake/Utility/String.php, line 25]
2017-10-14 21:34:02 Error: [FatalErrorException] Cannot use ‘String’ as class name as it is reserved
Stack Trace:
#0 /home/allfan5/public_html/allfans/lib/Cake/Error/ErrorHandler.php(203): ErrorHandler::handleFatalError(64, ‘Cannot use ‘Str…’, ‘/home/allfan5/p…’, 25)
#1 /home/allfan5/public_html/allfans/lib/Cake/Core/App.php(929): ErrorHandler::handleError(64, ‘Cannot use ‘Str…’, ‘/home/allfan5/p…’, 25, Array)
#2 /home/allfan5/public_html/allfans/lib/Cake/Core/App.php(902): App::_checkFatalError()
#3 [internal function]: App::shutdown()
#4 {main}
Я понятия не имею, что может быть причиной этого, так как функция оболочки полностью пуста. Даже действие, когда я пытался отправить пользователям электронное письмо, я скопировал код и запустил его с контроллера, и он работал нормально. Значит, что-то не так с тем, как Cake выполняет или вызывает оболочку.
Я запускаю торт 2.5 на PHP 5.4.