Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Спасибо за помощь, буду разбираться, потом отпишусь, вдруг кому поможет
так, ещё один момент
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 не работает
что выводит php artisan schedule:list после добавления?
выводит:
$ php artisan schedule:list
+---------+------------+-----------+
| command | expression | next time |
+---------+------------+-----------+
что пишет вывод php artisan schedule:run с ком. строки?
При запуске вручную: 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 минимум, но не может же быть такого чтобы в предыдущих версиях не работали примеры из документации...
Во-первых, так как крон не работает, я перепробовал все варианты запуска, в том числе и от рута.
Во-вторых, какая разница на данном этапе откуда идет запуск
В-третьих, в home папка с доменом, я ее подтер из пути, чтобы не выкладывать в общий доступ.
В-четвертых, как ваш комментарий может мне помочь?
Возможно это mail.ru отклоняет это письмо, определяет как спам
Версия 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();
}
}
Страницы 1