Ответ 1
Задачи были заменены на commands, которые являются одним и тем же в Laravel 4, но интегрированы с компонентом консоли Symfony и даже более мощнее, чем раньше.
Я пытаюсь найти , как настроить работу cron в Laravel 4, а также команду, которую я должен выполнить для этого мастера.
В Laravel 3 были Tasks
, но они, похоже, больше не существуют, и нет документации о том, как это сделать...
Задачи были заменены на commands, которые являются одним и тем же в Laravel 4, но интегрированы с компонентом консоли Symfony и даже более мощнее, чем раньше.
Ниже я расскажу о учебнике по использованию commands
в Laravel 4
с помощью cron. Я разделился на четыре шага, чтобы было легче следовать.
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),
);
}
}
Вы должны изменить эту строку:
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";
}
Вам необходимо зарегистрировать команду. Откройте файл app/start/artisan.php
и добавьте одну строку, как показано ниже:
Artisan::add(new RefreshStats);
Наконец, вы можете добавить запланированную задачу следующим образом:
crontab -e
И добавьте строку (выполните команду каждые 30 минут), как показано ниже:
*/30 * * * * php path_laravel_project/artisan refresh:stats
Альтернатива, если вам не нравятся команды, есть неофициальный пакет Laravel 4 cron: https://github.com/liebig/cron