Cron Job с Laravel 4

Я пытаюсь найти , как настроить работу cron в Laravel 4, а также команду, которую я должен выполнить для этого мастера.

В Laravel 3 были Tasks, но они, похоже, больше не существуют, и нет документации о том, как это сделать...

Ответы

Ответ 1

Задачи были заменены на commands, которые являются одним и тем же в Laravel 4, но интегрированы с компонентом консоли Symfony и даже более мощнее, чем раньше.

Ответ 2

Ниже я расскажу о учебнике по использованию commands в Laravel 4 с помощью cron. Я разделился на четыре шага, чтобы было легче следовать.


ШАГ №1: Создайте команду в Laravel 4:

php artisan command:make RefreshStats

С помощью команды выше Laravel создаст файл с именем RefreshStats.php в каталоге app/commands/


RefreshStats.php это файл вроде этого:

use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;

class RefreshStats extends Command {

        protected $name = 'command:name';
        protected $description = 'Command description.';

        public function __construct() {
                parent::__construct();
        }

        public function fire(){

        }

        protected function getArguments() {
            return array(
                array('example', InputArgument::REQUIRED, 'An example argument.'),
            );
        }

        protected function getOptions() {
            return array(
                array('example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null),
            );
        }

}



ШАГ № 2: простая "конфигурация" файла RefreshStats:

Вы должны изменить эту строку:

protected $name = 'command:name';

примерно так:

protected $name = 'refresh:stats';

Если вам не нужны аргументы (такие же для параметров), измените эту строку:

protected function getArguments() {
      return array(
          array('example', InputArgument::REQUIRED, 'An example argument.'),
      );
}

в

protected function getArguments() {
      return array();
}

И теперь обратите внимание на функцию fire. Команда выполнит исходный код, который будет написан в этой функции. Пример:

public function fire(){
    echo "Hello world";    
}



ШАГ № 3: зарегистрируйте команду:

Вам необходимо зарегистрировать команду. Откройте файл app/start/artisan.php и добавьте одну строку, как показано ниже:

Artisan::add(new RefreshStats);



ШАГ № 4: создать запланированную задачу CRON:

Наконец, вы можете добавить запланированную задачу следующим образом:

crontab -e

И добавьте строку (выполните команду каждые 30 минут), как показано ниже:

*/30 * * * * php path_laravel_project/artisan refresh:stats



И все будет работать автоматически!

Ответ 3

Альтернатива, если вам не нравятся команды, есть неофициальный пакет Laravel 4 cron: https://github.com/liebig/cron