При запуске cron с lumen: в пространстве имен "insert" не определены команды

Я написал код для команды cron, как показано ниже в lumen (микро-фреймворк laravel)

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use App\Models\EmailDump;
use DB;

/**
 * dumpEmails Class
 *
 * This cron is to dump emails with cron use
 *
 * @author Hetal Gohel <[email protected]>
 *
 */

class dumpEmails extends Command {

    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'insert:emails';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'This cron is to dump emails with cron use';

    /**
     * Create a new command instance.
     *
     * @return void
     */

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

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    { 
       echo "1";die;       
    }
}

в файле ядра, определенном ниже,

<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Laravel\Lumen\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
        \Laravelista\LumenVendorPublish\VendorPublishCommand::class,
        '\App\Console\Commands\dumpEmails',
    ];

    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
//    protected function schedule(Schedule $schedule)
//    {
//        return $schedule;
//    }
}

Я запустил команду с консоли, как показано ниже,

php artisan insert:emails

при запуске этой команды появляется ошибка, как показано ниже,

[Symfony \ Component \ Console \ Exception \ CommandNotFoundException] ← [39; 49 мин. ← [37; 41m В пространстве имен "insert" не определены команды.

пожалуйста, помогите мне решить эту проблему. спасибо.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
1 004
1

Ответы 1

Удалите __construct и оставьте только метод handle.

Кроме того, при листинге под $commands at Kernel вам необходимо указать класс.

Так что ваши

`\App\Console\Commands\dumpEmails`

становится

    DumpEmails::class

Несколько дополнительных советов:

  1. Имена классов пишутся с заглавной буквы; (dumpEmails -> DumpEmails)
  2. Добавьте { в новую строку;

Этот

class dumpEmails extends Command {

должно быть

class DumpEmails extends Command
{

Я также рекомендую проверить Стандарты PSR-x. Я оставил один из блогов, который, я думаю, может помочь вам начать с них, но идите дальше! :)

И последнее, но не менее важное: не забывайте, что Command Parent уже позволяет вам использовать свой потенциал командной строки. Итак, если вы хотите выводить и отлаживать, вы можете сделать это, используя:

$this->info('Your message to inform');
$this->error('Your error message');

Я внес указанные выше изменения, проблема все еще та же, моя версия просвета 5.2. *

hetal gohel 19.11.2018 11:33

Хммм, могу я попросить вас обновить, пожалуйста, с изменениями? Итак, у меня есть карта того, как там все устроено? :) Насколько мне сейчас известно, я бы поверил, что удаления __construct и правильной установки класса в классе Kernel будет достаточно мышление

Diogo Santo 19.11.2018 11:41

Я также внес небольшое изменение, которое, возможно, стоит попробовать. Если можно, удалите путь по умолчанию из вашего класса ядра, указав на свой командный класс. Если вы заметили, я просто удалил \App\Console\Commands\dumpEmails и оставил как Commands\dumpEmails. Это потому, что Kernel может уже сопоставлять его с папкой по умолчанию.

Diogo Santo 19.11.2018 11:51

Вам следует отредактировать свой вопрос, а не добавлять ответ: P, чтобы отслеживать, что мы делаем. Дайте мне несколько минут, пока я проверю это дальше

Diogo Santo 19.11.2018 12:01

@hetalgohen У меня он настроен и работает на моем локальном компьютере. Адаптирую свой ответ к тому, что получилось. в основном, все, что вам нужно беспокоиться на этом этапе, - это объявить его в своем классе Kernel. Убедитесь, что он указан как DumpEmails:::class в параметре $commands. Кроме того, убедитесь, что ваш файл - DumpEmails, а не dumpEmails, и что класс, объявленный в файле, также следует тому же правилу. После проверки, если ваш php artisan list перечисляет все существующие команды, и дайте мне знать, если 1. it runs properly и 2. If yours is now listed

Diogo Santo 19.11.2018 12:14

для меня он теперь работает, если я объявлю команду в файле ядра как: '\ App \ Console \ Commands \ DumpEmails',

hetal gohel 20.11.2018 05:21

Другие вопросы по теме