Я написал код для команды 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" не определены команды.
пожалуйста, помогите мне решить эту проблему. спасибо.






Удалите __construct и оставьте только метод handle.
Кроме того, при листинге под $commands at Kernel вам необходимо указать класс.
Так что ваши
`\App\Console\Commands\dumpEmails`
становится
DumpEmails::class
Несколько дополнительных советов:
{ в новую строку;Этот
class dumpEmails extends Command {
должно быть
class DumpEmails extends Command
{
Я также рекомендую проверить Стандарты PSR-x. Я оставил один из блогов, который, я думаю, может помочь вам начать с них, но идите дальше! :)
И последнее, но не менее важное: не забывайте, что Command Parent уже позволяет вам использовать свой потенциал командной строки. Итак, если вы хотите выводить и отлаживать, вы можете сделать это, используя:
$this->info('Your message to inform');
$this->error('Your error message');
Хммм, могу я попросить вас обновить, пожалуйста, с изменениями? Итак, у меня есть карта того, как там все устроено? :) Насколько мне сейчас известно, я бы поверил, что удаления __construct и правильной установки класса в классе Kernel будет достаточно мышление
Я также внес небольшое изменение, которое, возможно, стоит попробовать. Если можно, удалите путь по умолчанию из вашего класса ядра, указав на свой командный класс. Если вы заметили, я просто удалил \App\Console\Commands\dumpEmails и оставил как Commands\dumpEmails. Это потому, что Kernel может уже сопоставлять его с папкой по умолчанию.
Вам следует отредактировать свой вопрос, а не добавлять ответ: P, чтобы отслеживать, что мы делаем. Дайте мне несколько минут, пока я проверю это дальше
@hetalgohen У меня он настроен и работает на моем локальном компьютере. Адаптирую свой ответ к тому, что получилось. в основном, все, что вам нужно беспокоиться на этом этапе, - это объявить его в своем классе Kernel. Убедитесь, что он указан как DumpEmails:::class в параметре $commands. Кроме того, убедитесь, что ваш файл - DumpEmails, а не dumpEmails, и что класс, объявленный в файле, также следует тому же правилу. После проверки, если ваш php artisan list перечисляет все существующие команды, и дайте мне знать, если 1. it runs properly и 2. If yours is now listed
для меня он теперь работает, если я объявлю команду в файле ядра как: '\ App \ Console \ Commands \ DumpEmails',
Я внес указанные выше изменения, проблема все еще та же, моя версия просвета 5.2. *