Выполнение действий по cron-у
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Выполнение действий по cron-у
Написал новый рецепт, рассказывающий о выполнении действий по cron-у.
http://yiiframework.ru/doc/cookbook/ru/install.cron
http://yiiframework.ru/doc/cookbook/ru/install.cron
Нравится Yii? Давайте сделаем его лучше!.
Re: Выполнение действий по cron-у
Здравствуйте, Александр.
Прежде всего, хочу поблагодарить вас за ваш труд. Сайт просто замечательный! Столько полезной информации по yii на русском языке... спасибо!
Прежде всего, хочу поблагодарить вас за ваш труд. Сайт просто замечательный! Столько полезной информации по yii на русском языке... спасибо!
А если сделать просто проверку по ip-адресу в коде? Например разрешить выполнение скрипта только с айпи сервера на котором работает крон?Данный способ имеет большой минус: если по крону выполняются достаточно затратные действия, кто угодно при знании URL сможет сильно нагрузить сервер.
Re: Выполнение действий по cron-у
Еще есть runactions.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Выполнение действий по cron-у
Ну, можно, конечно. Вот только есть ли смысл?
Нравится Yii? Давайте сделаем его лучше!.
Re: Выполнение действий по cron-у
Ну просто, в таком случае, данный способ не имеет большого минуса, который описан рецепте:)
Данный способ имеет большой минус: если по крону выполняются достаточно затратные действия, кто угодно при знании URL сможет сильно нагрузить сервер.
Re: Выполнение действий по cron-у
Следуя рецепту, получаю следующее: "CHttpRequest is unable to determine the request URI."
Я правильно понимаю, что статья устарела и нужно использовать yiic для команд cron?
Я правильно понимаю, что статья устарела и нужно использовать yiic для команд cron?
Re: Выполнение действий по cron-у
Статья будет актуальна ещё долго.. по крайней мере в части получения через HTTP (оно не только для Yii работает)Dismal писал(а):Следуя рецепту, получаю следующее: "CHttpRequest is unable to determine the request URI."
Я правильно понимаю, что статья устарела и нужно использовать yiic для команд cron?
Насчёт URI - там вроде как написано
...существующий метод контроллера..
...
Re: Выполнение действий по cron-у
Существующий метод контроллера - эмуляция браузера, все верно.esche писал(а):...существующий метод контроллера..
Но ниже: Использование консольного приложения, подключается файл yii.php, а не yiic
Возможно, опечатка в статье?
Re: Выполнение действий по cron-у
Читал, много думал. РезумЭ: Для создания консольного приложения всё расписано чётко. Во всяком случае у меня всё заработало.
Re: Выполнение действий по cron-у
@331520
Здорово, если так.
Резюме: Поздравляю вас с третьим сообщением. Видно хорошо думали и много читали ))))
Здорово, если так.
Резюме: Поздравляю вас с третьим сообщением. Видно хорошо думали и много читали ))))
Re: Выполнение действий по cron-у
Ошибки нет в рецепте? Я заметил, что сначала написано
А потомСоздаем файл protected/cron.php
Если в первом и втором случае файлы разные, то следует также указать, что protected/config/cron.php также необходимо создать, потому что у меня по умолчанию такого файла нетКопируем файл конфигурации protected/config/console.php в protected/config/cron.php
Re: Выполнение действий по cron-у
2 вариант.
и там console.php кажись
и там console.php кажись
Re: Выполнение действий по cron-у
В общем, сделал я следующим образом:
1. Создал файл в папке protected - cron.php и добавил в него следующее
Создал файл protected/config/cron.php и скопировал в него настройки из protected/config/console.php, единственное, изменил данные для подключения к БД и прописал дополнительный компонент
Само собой, создал /protected/commands/TestCommand.php и добавил туда свою команду
запускаю через SSH команду
где указываю полный путь к cron.php, в результате мне ругается SSH на то, что не подключены различные контроллеры. Я думал, они автоматом подключатся, но команды типа
выдают ошибку
Я уже вручную инклудил все контроллеры, но почему то когда подключаю все, которые требуются, ругается уже на
Подскажите, что я сделал не так?
Так же пробовал обращаться для запуска команды через браузер, создав для команды свой контроллер CronController. Через браузер выполняется, а через SSH или cron не хочет, пишет, что нашел сайт, скачал содержимое (wget -O - 'http://site.ru/cron/index'), но также присутствует такая строка
Length: unspecified [text/html]
1. Создал файл в папке protected - cron.php и добавил в него следующее
Код: Выделить всё
<?php
$yiic=dirname(__FILE__).'/../framework/yiic.php';
$config=dirname(__FILE__).'/config/cron.php';
require_once($yiic);
Код: Выделить всё
'mailer' => array(
'class' => 'application.extensions.mailer.EMailer',
'pathViews' => 'application.views.email',
'pathLayouts' => 'application.views.email.layouts'
),
запускаю через SSH команду
Код: Выделить всё
php /path/to/cron.php test
Код: Выделить всё
Turn::model()->findByAttributes(array('screen_name' => $itemTurn['screen_name']));
Код: Выделить всё
PHP Error[2]: include(Turn.php): failed to open stream: No such file or directory
in file /var/www/user/data/www/site.ru/framework/YiiBase.php at line 421
Код: Выделить всё
PHP Error[2]: include(Controller.php): failed to open stream: No such file or directory
in file /var/www/user/data/www/site.ru/framework/YiiBase.php at line 421
Так же пробовал обращаться для запуска команды через браузер, создав для команды свой контроллер CronController. Через браузер выполняется, а через SSH или cron не хочет, пишет, что нашел сайт, скачал содержимое (wget -O - 'http://site.ru/cron/index'), но также присутствует такая строка
Length: unspecified [text/html]
Re: Выполнение действий по cron-у
Код: Выделить всё
'import'=>array(
'application.models.*',
// 'application.components.*',
'application.helpers.*',
),
Re: Выполнение действий по cron-у
Ну конечно я и не знал, что оно требуется:) Спасибо за подсказку, теперь другие косяки полезли, к Cron, не имеющие отношения на мой взгляд:ugeek:futbolim писал(а):забыли ?Код: Выделить всё
'import'=>array( 'application.models.*', // 'application.components.*', 'application.helpers.*', ),
Код: Выделить всё
exception 'CException' with message 'CConsoleApplication and its behaviors do not have a method or closure named "getSession".
Re: Выполнение действий по cron-у
да, в консоли нет компонента работы с сессиями, поэтому нельзя там использовать сессии
Re: Выполнение действий по cron-у
его в принципе нет и невозможно это сделать, или можно добавить/изменить что-то, и все заработает? Извиняюсь за глупые вопросы, в вопросе Yii я полный профанfutbolim писал(а):да, в консоли нет компонента работы с сессиями, поэтому нельзя там использовать сессии
Re: Выполнение действий по cron-у
Подключил PHPExcel через расширение yiiexcel которое есть на сайте. Все работает. Отключил автолоадер PHPExcel, добавил в import папку с vendor с расширением, в index.php добавил регистрацию автолоадера PHPExcel. Теперь по рецепту сделал пример. Все работает, кроме работы с библиотекой. Не очень понятно как для файла cron.php зарегистрировать автолоадер? Выходит ошибка после команды
php /var/www/site/protected/cron.php test
PHP Error[2]: include(PHPExcel_IOFactory.php): failed to open stream: No such file or directory
in file /var/www/framework/YiiBase.php at line 421
#0 /var/www/framework/YiiBase.php(421): autoload()
#1 unknown(0): autoload()
#2 /var/www/site/protected/commands/TestCommand.php(37): spl_autoload_call()
#3 /var/www/site/protected/commands/TestCommand.php(27): TestCommand->actionExcel()
#4 /var/www/site/protected/commands/TestCommand.php(13): TestCommand->actionIndex()
#5 /var/www/framework/console/CConsoleCommandRunner.php(67): TestCommand->run()
#6 /var/www/framework/console/CConsoleApplication.php(91): CConsoleCommandRunner->run()
#7 /var/www/framework/base/CApplication.php(169): CConsoleApplication->processRequest()
#8 /var/www/framework/yiic.php(33): CConsoleApplication->run()
#9 /var/www/site/protected/cron.php(12): require_once()
php /var/www/site/protected/cron.php test
PHP Error[2]: include(PHPExcel_IOFactory.php): failed to open stream: No such file or directory
in file /var/www/framework/YiiBase.php at line 421
#0 /var/www/framework/YiiBase.php(421): autoload()
#1 unknown(0): autoload()
#2 /var/www/site/protected/commands/TestCommand.php(37): spl_autoload_call()
#3 /var/www/site/protected/commands/TestCommand.php(27): TestCommand->actionExcel()
#4 /var/www/site/protected/commands/TestCommand.php(13): TestCommand->actionIndex()
#5 /var/www/framework/console/CConsoleCommandRunner.php(67): TestCommand->run()
#6 /var/www/framework/console/CConsoleApplication.php(91): CConsoleCommandRunner->run()
#7 /var/www/framework/base/CApplication.php(169): CConsoleApplication->processRequest()
#8 /var/www/framework/yiic.php(33): CConsoleApplication->run()
#9 /var/www/site/protected/cron.php(12): require_once()