Cron Job с Laravel 4


Answers

Ниже я подробно расскажу об использовании 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 файл app/start/artisan.php и добавьте одну строку, как app/start/artisan.php ниже:

Artisan::add(new RefreshStats);


ШАГ № 4: Создание запланированной задачи CRON :

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

crontab -e

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

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


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

Question

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

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




Links