首页 > 解决方案 > Laravel 中使用队列的问题

问题描述

我遇到了一些问题,直到现在我都无法解决。当我执行时php artisan queue:work,我有下一个错误:

[2019-09-22 23:25:20][12] 处理:App\Listeners\WelcomeNewStudentListener

[2019-09-22 23:25:20][12] 失败:App\Listeners\WelcomeNewStudentListener

在我的.env文件下面:

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:i+VBlcoP1fQodPn+ZV9os2knWv/piI4Gb/TDr0Dmq9U=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=crudAlumnos
DB_USERNAME=root
DB_PASSWORD=12345

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=database
SESSION_DRIVER=file
SESSION_LIFETIME=120

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=null

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

在我的EventServiceProvider.php我有下一个:

<?php

    namespace App\Providers;

    use App\Events\NewStudentHasRegisteredEvent;
    //use App\Listeners\WelcomeNewStudentListener;
    use App\Listeners\RegisterStudentToNewsletter;
    //use App\Listeners\NotifyAdminViaSlack;
    use Illuminate\Support\Facades\Event;
    use Illuminate\Auth\Events\Registered;
    use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
    use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;

    class EventServiceProvider extends ServiceProvider
    {
        /**
         * The event listener mappings for the application.
         *
         * @var array
         */
        protected $listen = [
            //agregando mi evento
            NewStudentHasRegisteredEvent::class => [
                //aqui se agrega el listener
                \App\Listeners\WelcomeNewStudentListener::class,
                RegisterStudentToNewsletter::class,
                \App\Listeners\NotifyAdminViaSlack::class,
            ],
        ];

        /**
         * Register any events for your application.
         *
         * @return void
         */
        public function boot()
        {
            parent::boot();

            //
        }
    }

最后在我的WelcomeNewStudenListener.php

<?php

namespace App\Listeners;

use App\Mail\WelcomeNewUserMail;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Support\Facades\Mail;

class WelcomeNewStudentListener implements ShouldQueue
{

//ESTE ES EL LISTENER
    /**
     * Handle the event.
     *
     * @param  object  $event
     * @return void
     */
    public function handle($event)
    {
        //
        sleep(10); //10 seconds

        Mail::to($event->datosEnviar->email)->send(new WelcomeNewUserMail());
    }
}

另外failed_jobs,我的数据库中有工作和表格。

所以我无法用queue:work解决这个问题

标签: phplaravel

解决方案


推荐阅读