Laravel 在 Pusher 上广播,作业队列失败
Laravel broadcasting on Pusher, failed job queue
我建立了一个聊天室 API,它使用 Laravel 事件和监听器,通过推送器广播并通过 laravel 回声和 Vue 监听那些 public 和私人频道。
然而,我被卡住的地方是在必须重新安装 wamp64 并将 Laravel 应用程序移动到新安装的 wamp64/www/ 路径之后,composer 已更新,所有依赖项都根据需要位于新文件夹中,但是,事件和作业队列会出现问题。每次触发事件时,作业都会失败。
我想指出,由于聊天室中的听众在工作,我的 Pusher 帐户可以正常使用。 broadcasting/job 在它卡住的地方排队。(正在订阅聊天室频道,但是它没有收到来自 event/broadcasting 的消息)。
下面是失败的作业异常。
Illuminate\Broadcasting\BroadcastException in C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Broadcasting\Broadcasters\PusherBroadcaster.php:117
Stack trace:
#0 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Broadcasting\BroadcastEvent.php(48): Illuminate\Broadcasting\Broadcasters\PusherBroadcaster->broadcast(Array, 'App\Events\NewC...', Array)
#1 [internal function]: Illuminate\Broadcasting\BroadcastEvent->handle(Object(Illuminate\Broadcasting\Broadcasters\PusherBroadcaster))
#2 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php(29): call_user_func_array(Array, Array)
#3 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php(87): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#4 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php(31): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
#5 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Container\Container.php(572): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)
#6 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Bus\Dispatcher.php(94): Illuminate\Container\Container->call(Array)
#7 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(128): Illuminate\Bus\Dispatcher->Illuminate\Bus\{closure}(Object(Illuminate\Broadcasting\BroadcastEvent))
#8 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(104): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Broadcasting\BroadcastEvent))
#9 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Bus\Dispatcher.php(98): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#10 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Queue\CallQueuedHandler.php(49): Illuminate\Bus\Dispatcher->dispatchNow(Object(Illuminate\Broadcasting\BroadcastEvent), false)
#11 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Queue\Jobs\Job.php(83): Illuminate\Queue\CallQueuedHandler->call(Object(Illuminate\Queue\Jobs\DatabaseJob), Array)
#12 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Queue\Worker.php(327): Illuminate\Queue\Jobs\Job->fire()
#13 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Queue\Worker.php(277): Illuminate\Queue\Worker->process('database', Object(Illuminate\Queue\Jobs\DatabaseJob), Object(Illuminate\Queue\WorkerOptions))
#14 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Queue\Worker.php(118): Illuminate\Queue\Worker->runJob(Object(Illuminate\Queue\Jobs\DatabaseJob), 'database', Object(Illuminate\Queue\WorkerOptions))
#15 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Queue\Console\WorkCommand.php(102): Illuminate\Queue\Worker->daemon('database', 'default', Object(Illuminate\Queue\WorkerOptions))
#16 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Queue\Console\WorkCommand.php(86): Illuminate\Queue\Console\WorkCommand->runWorker('database', 'default')
#17 [internal function]: Illuminate\Queue\Console\WorkCommand->handle()
#18 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php(29): call_user_func_array(Array, Array)
#19 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php(87): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#20 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php(31): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
#21 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Container\Container.php(572): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)
#22 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Console\Command.php(183): Illuminate\Container\Container->call(Array)
#23 C:\wamp64\www\nathanreynolds\vendor\symfony\console\Command\Command.php(255): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#24 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Console\Command.php(170): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#25 C:\wamp64\www\nathanreynolds\vendor\symfony\console\Application.php(901): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#26 C:\wamp64\www\nathanreynolds\vendor\symfony\console\Application.php(262): Symfony\Component\Console\Application->doRunCommand(Object(Illuminate\Queue\Console\WorkCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#27 C:\wamp64\www\nathanreynolds\vendor\symfony\console\Application.php(145): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#28 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Console\Application.php(89): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#29 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Foundation\Console\Kernel.php(122): Illuminate\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#30 C:\wamp64\www\nathanreynolds\artisan(37): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#31 {main}
有效载荷
{"displayName":"App\Events\NewChat","job":"Illuminate\Queue\CallQueuedHandler@call","maxTries":null,"timeout":null,"timeoutAt":null,"data":{"commandName":"Illuminate\Broadcasting\BroadcastEvent","command":"O:38:\"Illuminate\Broadcasting\BroadcastEvent\":7:{s:5:\"event\";O:18:\"App\Events\NewChat\":4:{s:4:\"chat\";a:5:{s:3:\"rid\";s:1:\"1\";s:5:\"owner\";s:18:\"frezknow@gmail.com\";s:4:\"body\";s:9:\"tigfdhugs\";s:10:\"created_at\";s:19:\"2019-02-16 18:04:33\";s:4:\"user\";O:8:\"stdClass\":2:{s:4:\"name\";s:15:\"Nathan Reynolds\";s:3:\"img\";s:49:\"uploads\/frezknow@gmail.com\/1550337650_DSC0140.jpg\";}}s:6:\"status\";s:6:\"public\";s:4:\"user\";O:45:\"Illuminate\Contracts\Database\ModelIdentifier\":4:{s:5:\"class\";s:8:\"App\User\";s:2:\"id\";i:1;s:9:\"relations\";a:0:{}s:10:\"connection\";s:5:\"mysql\";}s:6:\"socket\";N;}s:10:\"connection\";N;s:5:\"queue\";N;s:15:\"chainConnection\";N;s:10:\"chainQueue\";N;s:5:\"delay\";N;s:7:\"chained\";a:0:{}}"}}
显然我遇到了连接问题,这很奇怪,因为我可以在我的 Vue 组件中正常连接。?
第 117 行状态
throw new BroadcastException(
is_bool($response) ? 'Failed to connect to Pusher.' : $response['body']
);
由于后续文件(cacert.pem)不在我的PHP_versionx.x.x.x/extras/ssl/文件夹中,需要在php.ini中引用该文件文件,它无法连接到 PUSHER。
资源
https://github.com/laravel/framework/issues/16478 请阅读 [shadoWalker89] 的回答。
What exactly is cacert.pem for?
我建立了一个聊天室 API,它使用 Laravel 事件和监听器,通过推送器广播并通过 laravel 回声和 Vue 监听那些 public 和私人频道。
然而,我被卡住的地方是在必须重新安装 wamp64 并将 Laravel 应用程序移动到新安装的 wamp64/www/ 路径之后,composer 已更新,所有依赖项都根据需要位于新文件夹中,但是,事件和作业队列会出现问题。每次触发事件时,作业都会失败。
我想指出,由于聊天室中的听众在工作,我的 Pusher 帐户可以正常使用。 broadcasting/job 在它卡住的地方排队。(正在订阅聊天室频道,但是它没有收到来自 event/broadcasting 的消息)。
下面是失败的作业异常。
Illuminate\Broadcasting\BroadcastException in C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Broadcasting\Broadcasters\PusherBroadcaster.php:117
Stack trace:
#0 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Broadcasting\BroadcastEvent.php(48): Illuminate\Broadcasting\Broadcasters\PusherBroadcaster->broadcast(Array, 'App\Events\NewC...', Array)
#1 [internal function]: Illuminate\Broadcasting\BroadcastEvent->handle(Object(Illuminate\Broadcasting\Broadcasters\PusherBroadcaster))
#2 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php(29): call_user_func_array(Array, Array)
#3 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php(87): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#4 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php(31): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
#5 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Container\Container.php(572): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)
#6 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Bus\Dispatcher.php(94): Illuminate\Container\Container->call(Array)
#7 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(128): Illuminate\Bus\Dispatcher->Illuminate\Bus\{closure}(Object(Illuminate\Broadcasting\BroadcastEvent))
#8 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(104): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Broadcasting\BroadcastEvent))
#9 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Bus\Dispatcher.php(98): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#10 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Queue\CallQueuedHandler.php(49): Illuminate\Bus\Dispatcher->dispatchNow(Object(Illuminate\Broadcasting\BroadcastEvent), false)
#11 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Queue\Jobs\Job.php(83): Illuminate\Queue\CallQueuedHandler->call(Object(Illuminate\Queue\Jobs\DatabaseJob), Array)
#12 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Queue\Worker.php(327): Illuminate\Queue\Jobs\Job->fire()
#13 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Queue\Worker.php(277): Illuminate\Queue\Worker->process('database', Object(Illuminate\Queue\Jobs\DatabaseJob), Object(Illuminate\Queue\WorkerOptions))
#14 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Queue\Worker.php(118): Illuminate\Queue\Worker->runJob(Object(Illuminate\Queue\Jobs\DatabaseJob), 'database', Object(Illuminate\Queue\WorkerOptions))
#15 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Queue\Console\WorkCommand.php(102): Illuminate\Queue\Worker->daemon('database', 'default', Object(Illuminate\Queue\WorkerOptions))
#16 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Queue\Console\WorkCommand.php(86): Illuminate\Queue\Console\WorkCommand->runWorker('database', 'default')
#17 [internal function]: Illuminate\Queue\Console\WorkCommand->handle()
#18 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php(29): call_user_func_array(Array, Array)
#19 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php(87): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#20 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php(31): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
#21 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Container\Container.php(572): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)
#22 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Console\Command.php(183): Illuminate\Container\Container->call(Array)
#23 C:\wamp64\www\nathanreynolds\vendor\symfony\console\Command\Command.php(255): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#24 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Console\Command.php(170): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#25 C:\wamp64\www\nathanreynolds\vendor\symfony\console\Application.php(901): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#26 C:\wamp64\www\nathanreynolds\vendor\symfony\console\Application.php(262): Symfony\Component\Console\Application->doRunCommand(Object(Illuminate\Queue\Console\WorkCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#27 C:\wamp64\www\nathanreynolds\vendor\symfony\console\Application.php(145): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#28 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Console\Application.php(89): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#29 C:\wamp64\www\nathanreynolds\vendor\laravel\framework\src\Illuminate\Foundation\Console\Kernel.php(122): Illuminate\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#30 C:\wamp64\www\nathanreynolds\artisan(37): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#31 {main}
有效载荷
{"displayName":"App\Events\NewChat","job":"Illuminate\Queue\CallQueuedHandler@call","maxTries":null,"timeout":null,"timeoutAt":null,"data":{"commandName":"Illuminate\Broadcasting\BroadcastEvent","command":"O:38:\"Illuminate\Broadcasting\BroadcastEvent\":7:{s:5:\"event\";O:18:\"App\Events\NewChat\":4:{s:4:\"chat\";a:5:{s:3:\"rid\";s:1:\"1\";s:5:\"owner\";s:18:\"frezknow@gmail.com\";s:4:\"body\";s:9:\"tigfdhugs\";s:10:\"created_at\";s:19:\"2019-02-16 18:04:33\";s:4:\"user\";O:8:\"stdClass\":2:{s:4:\"name\";s:15:\"Nathan Reynolds\";s:3:\"img\";s:49:\"uploads\/frezknow@gmail.com\/1550337650_DSC0140.jpg\";}}s:6:\"status\";s:6:\"public\";s:4:\"user\";O:45:\"Illuminate\Contracts\Database\ModelIdentifier\":4:{s:5:\"class\";s:8:\"App\User\";s:2:\"id\";i:1;s:9:\"relations\";a:0:{}s:10:\"connection\";s:5:\"mysql\";}s:6:\"socket\";N;}s:10:\"connection\";N;s:5:\"queue\";N;s:15:\"chainConnection\";N;s:10:\"chainQueue\";N;s:5:\"delay\";N;s:7:\"chained\";a:0:{}}"}}
显然我遇到了连接问题,这很奇怪,因为我可以在我的 Vue 组件中正常连接。?
第 117 行状态
throw new BroadcastException(
is_bool($response) ? 'Failed to connect to Pusher.' : $response['body']
);
由于后续文件(cacert.pem)不在我的PHP_versionx.x.x.x/extras/ssl/文件夹中,需要在php.ini中引用该文件文件,它无法连接到 PUSHER。
资源 https://github.com/laravel/framework/issues/16478 请阅读 [shadoWalker89] 的回答。 What exactly is cacert.pem for?