Работа в Cron в Ларавеле 4

Мне нужно задание Cron для выполнения Скрепера на веб-сайте и отправки электронной почты с информацией, я сделал контроллер для этого, но когда я настроил команду для запуска этого файла

 php app / controllers / ScraperController.php 

Я получаю эту ошибку

PHP Неустранимая ошибка: Class 'BaseController' не найден в /var/www/U-Scraper/app/controllers/ScraperController.php в строке 2

Дело в том, что он работает, когда я настраиваю маршрут к этому контроллеру

Контроллеры не работают сами по себе, они работают как компонент Laravel. Если вы загружаете свой контроллер напрямую, Laravel не загружается, и насколько PHP связан с BaseController , а также с классом Controller Laravel, не существует. Обычно ваш веб-сервер загружает public/index.php который загружает Laravel и так далее. Если это вас сбивает с толку, вы можете узнать, как работает автозагрузка с Composer: http://net.tutsplus.com/tutorials/php/easy-package-management-with-composer/

Что вам нужно сделать, это написать команду Artisan, которая сделает все, что вам нужно, и вызвать эту команду с помощью cron. Этот вопрос дает подробную информацию о том, как это сделать: Cron Job в Laravel

Я предлагаю вам создать новую команду Artisan вместо контроллера.

Затем задайте задачу CRON для запуска вашей команды, например:

 1 * * * * /usr/bin/php /path/to/the/artisan nameofthecustomcommand 

Если вы не можете запустить / установить задачу таким образом, но вы можете установить URL-адрес для выполнения

 http://mydomain.com/cron.php // cron.php // I am aware I do use exec() exec('php artisan nameofthecustomcommand'); 

Подробнее о командах Artisan здесь

Есть шанс, вы можете поместить весь контроллер в эту команду, не касаясь кода;)

Так я установил задания CRON, используя Laravel 4 и функцию Artisan Command.

Во-первых, создайте новую команду с помощью Artisan. В командной строке введите:

php artisan command:make FooCommand

В папке app/commands вас появится новый файл FooCommand.php .

Откройте этот файл и напишите свой код в функции fire() . Это будет выполняться каждый раз, когда запускается ваша команда. Существуют и другие функции, которые позволяют вам захватывать аргументы и параметры из командной строки.

В вашем файле команды есть также переменные $name и $description которые необходимо заполнить. Дайте вашей задаче приятное имя и описание, например:

 /** * The console command name. * * @var string */ protected $name = 'command:my_foo_command'; /** * The console command description. * * @var string */ protected $description = 'A description of what the command does'; 

Как только вы закончите, вам необходимо зарегистрировать его в Artisan, открыв app/start/artisan.php и добавив:

Artisan::add(new FooCommand);

Затем, используя Artisan в командной строке, вы можете запустить свою задачу, используя:

 php artisan command:my_foo_command 

Это вызовет команду только один раз – чтобы запустить ее на регулярной основе, добавьте следующее в CRONTAB:

 1 * * * * /usr/bin/php /path/to/the/artisan command:my_foo_command