Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Re: Laravel 5.x » Не выполняются Cron задания в Kernel.php » 16.02.2017 15:24:58

Спасибо за помощь, буду разбираться, потом отпишусь, вдруг кому поможет

#2 Re: Laravel 5.x » Не выполняются Cron задания в Kernel.php » 16.02.2017 15:09:46

constb пишет:

так, ещё один момент

protected $signature = 'cron:exec';
    protected $name = 'cron:command';

    protected $description = 'Command description';

вот в этом по-моему то ли $name то ли $signature лишний. не помню в какой именно версии добавили $signature

ps. нашёл проект на 5.2 – да, $signature там уже есть. убери $name

Убрал, но это ничего не меняет.  php artisan cron:exec выполняется в консоли и удаляет неподтвержденных юзеров, а через Kernel не работает

#3 Re: Laravel 5.x » Не выполняются Cron задания в Kernel.php » 16.02.2017 15:06:38

constb пишет:

что выводит php artisan schedule:list после добавления?

выводит:

$ php artisan schedule:list
+---------+------------+-----------+
| command | expression | next time |
+---------+------------+-----------+

#4 Re: Laravel 5.x » Не выполняются Cron задания в Kernel.php » 16.02.2017 13:38:42

constb пишет:

что пишет вывод php artisan schedule:run с ком. строки?

Larapost пишет:

При запуске вручную: php artisan schedule:run выдает ошибку:
No scheduled commands are ready to run.

Задача Cron запускается и выполняется, проверял. Если в Kernel указать, следующий код, то cron его выполняет:

namespace App\Console;
use DB;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
   
    protected $commands = [
       
    ];

    protected function schedule(Schedule $schedule)
    {
		
		  DB::table('confirm_users')
		  ->whereRaw(DB::raw('created_at < now() - interval 1 day'))
		  ->delete();
    }
}

Но это выполняется каждую минуту по запуску крон задания на сервере. Если заключить код в call(...) он уже не работает:

namespace App\Console;
use DB;use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    protected $commands = [
        //Commands\Cron::class,
        'App\Console\Commands\Cron',
    ];

    protected function schedule(Schedule $schedule)
    {
        $schedule->call(function () {
		  DB::table('confirm_users')
		  ->whereRaw(DB::raw('created_at < now() - interval 1 day'))
		  ->delete();
		})->everyMinute();	
				
    }
}

Короче вроде все выполнено по мануалу и примеру там, но отказывается работать.
Были еще идеи, что надо Ларавэл обновлять до 5.3 минимум, но не может же быть такого чтобы в предыдущих версиях не работали примеры из документации...

#5 Re: Laravel 5.x » Не выполняются Cron задания в Kernel.php » 16.02.2017 09:28:13

Во-первых, так как крон не работает, я перепробовал все варианты запуска, в том числе и от рута.
Во-вторых, какая разница на данном этапе откуда идет запуск
В-третьих, в home папка с доменом, я ее подтер из пути, чтобы не выкладывать в общий доступ.
В-четвертых, как ваш комментарий может мне помочь?

#6 Re: Laravel 5.x » Mail::send не дает отправить если в во view входные данные » 15.02.2017 10:03:17

Возможно это mail.ru отклоняет это письмо, определяет как спам

#7 Laravel 5.x » Не выполняются Cron задания в Kernel.php » 15.02.2017 09:25:49

Larapost
Ответов: 15

Версия Laravel: 5.2.4
Версия PHP: PHP 7.0
Операционная система и её версия: Centos 7
Вендор и версия сервера БД: MariaDB
Вендор и версия Веб-сервера: Nginx
Медод подключения PHP: PHP-FPM

Задача, что должно происходить _в целом_, техническое задание:
Каждую минуту должно выполнятся CRON-задание по удалению не подтвержденных пользователей из БД.
Что произошло, текст ошибки, если есть:
При запуске вручную: php artisan schedule:run выдает ошибку:
No scheduled commands are ready to run.

В crontab указано:
* * * * * root /usr/bin/php /home/artisan schedule:run 1>> /dev/null 2>&1
Ошибок в /var/log/cron нет, команда выполняется

При выполнении команды вручную php artisan cron:exec пользователи удаляются.
Пробовал указывать call() вызов прямо в Kernel.php - тоже не выполняется.
Как настроить cron?


Код:

app\Console\Kernel.php

namespace App\Console;
use DB;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    protected $commands = [
        Commands\Cron::class
    ];

    protected function schedule(Schedule $schedule)
    {
		$schedule->command('cron:exec')->everyMinute();
    }
}

app\Console\Commands\Cron.php:

namespace App\Console\Commands;

use Illuminate\Console\Command;
use DB;

class Cron extends Command
{
    protected $signature = 'cron:exec';
    protected $name = 'cron:command';

    protected $description = 'Command description';

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

    public function handle()
    {
		  DB::table('confirm_users')
		  ->whereRaw(DB::raw('created_at < now() - interval 1 day'))
		  ->delete();
    }
}

Подвал раздела