Моя версия laravel 5.0.28, я строю на cloud9, я добавил эту команду в свой cron
#!/bin/bash PATH=/usr/bin * * * * * php /home/ubuntu/workspace/app/artisan scheduled:run 1>> /dev/null 2>&1
И я добавляю этот код на свой Kernel.php
. Я верю это сидеть https://laravel-news.com/2014/11/laravel-5-scheduler/
<?php namespace App\Console; use Illuminate\Console\Scheduling\Schedule; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; use App\Http\Controllers\ApiController; class Kernel extends ConsoleKernel { protected $commands = [ 'App\Console\Commands\Inspire', ]; protected function schedule(Schedule $schedule) { $schedule->call('ApiController@test_job')->hourly(); } }
Я жду и все еще не работаю, и я пытаюсь использовать эту команду php artisan schedule:run
, и я получаю этот возврат. No scheduled commands are ready to run.
Я нашел этот ответ Laravel 5 «Класс не существует» при использовании планировщика
Я изменяю свой код, и этот код не задал времени, поэтому я изменяю свой cron
, но все равно не работаю. Понятия не имею. пожалуйста, дайте мне какой-то момент, спасибо.
код
$schedule->call(join('@', [ApiController::class, 'test_job']));
хрон
0 0,3,6,9,12,15,18,21 * * * php /home/ubuntu/workspace/app/artisan schedule:run 1>> /dev/null 2>&1 30 1,4,7,10,13,16,19,22 * * * php /home/ubuntu/workspace/app/artisan schedule:run 1>> /dev/null 2>&1
Планировщик Laravel работает с командами, а не с методами контроллера:
php artisan make:command PurchasePodcast
namespace App\Console\Commands; use Illuminate\Console\Command; class PurchasePodcast extends Command { protected $name = 'purchase:podcast'; public function fire() { // do stuff here } }
Console\Kernel.php
: protected $commands = [ 'App\Console\Commands\PurchasePodcast', ];
$schedule->command('purchase:podcast')->hourly();
сначала проверить, работает ли cron на вашем сервере или в локальном типе:
> sudo service cron status
если не установлено:
> sudo apt-get install cron
для включения планировщика laravel:
> crontab -e
и вы можете выбрать редактор, если vim не открывается напрямую. Обязательно введите эту строку внизу:
* * * * * php /path_from_root_to_laravel_proj_folder/artisan schedule:run 1>> /dev/null 2>&1
для проверки, если вы настроили внутри laravel планировщик вправо, запустите это из папки ваших проектов:
>php artisan schedule:run
это должно выполнить задачи и рассказать вам, что делает.
Чтобы выполнить ответ @ limonte, создайте консольную команду следующим образом:
php artisan make:console CampaignsCollect --command=campaigns:collect
Ссылка: ссылка
Существует несколько аспектов поиска причины: во-первых, проверьте, правильно ли установлен «часовой пояс» в config / app.php. Laravel сбросит часовой пояс, даже если вы уже настроили его в php.ini. Во-вторых, убедитесь, что crontab работает должным образом. Когда вы получите сообщение «Нет расписания, чтобы быть готовым», это означает, что ваш crontab запущен и может обнаружить команду php и artisan.