标签: laravel-horizon

如何解决"laravel/horizo​​n v1.1.0需要ext-pcntl* - >系统中缺少所请求的PHP扩展pcntl"?

当我composer install在命令提示符上运行时,会出现如下错误:

  Problem 1
    - Installation request for laravel/horizon v1.1.0 -> satisfiable by laravel/horizon[v1.1.0].
    - laravel/horizon v1.1.0 requires ext-pcntl * -> the requested PHP extension pcntl is missing from your system.

  To enable extensions, verify that they are enabled in your .ini files:
    - C:\xampp-7.1\php\php.ini
  You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个错误?

php laravel composer-php laravel-5.5 laravel-horizon

22
推荐指数
7
解决办法
2万
查看次数

没有关于模型[App\Models\Match]的查询结果

我正在使用Laravel构建API,并希望使用Laravel Notifications系统发送推送通知.我有一个匹配模型(基本上是一个帖子),另一个用户可以喜欢这个匹配.当喜欢匹配时,帖子的创建者将获得推送通知.它就像Instagram,Facebook等.

推送通知通常不会发送给用户.我安装了Laravel Horizo​​n以查看是否存在错误.有时通知是发送的,有时则不是.使用完全相同的数据:

Laravel Horizo​​n列表

通知有时会使用完全相同的数据(相同的用户,相同的匹配)失败.

错误如下:

Illuminate\Database\Eloquent\ModelNotFoundException:/home/forge/owowgolf.com/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:312中的模型[App\Models\Match] 118没有查询结果

我确定匹配和用户存在于数据库中,我在发送通知之前已经验证过.有人知道出了什么问题吗?我在网上找到的一切都是人们在将通知发送到队列之前没有保存他们的模型.但是,如果模型不存在,则甚至无法到达代码将通知发送到队列中的行.由于路由/控制器中的隐式绑定.

控制器方法:

/**
 * Like a match.
 *
 * @param  \App\Models\Match  $match
 * @return \Illuminate\Http\JsonResponse
 */
public function show(Match $match)
{
    $match->like();

    $players = $match->players()->where('user_id', '!=', currentUser()->id)->get();

    foreach ($players as $user) {
        $user->notify(new NewLikeOnPost($match, currentUser()));
    }

    return ok();
}
Run Code Online (Sandbox Code Playgroud)

通知:

<?php

namespace App\Notifications;

use App\Models\Match;
use App\Models\User;
use Illuminate\Bus\Queueable;
use NotificationChannels\Apn\ApnChannel;
use NotificationChannels\Apn\ApnMessage;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;

class NewLikeOnPost extends Notification implements ShouldQueue
{
    use Queueable;

    /**
     * The match instance.
     * …
Run Code Online (Sandbox Code Playgroud)

php queue laravel laravel-5 laravel-horizon

14
推荐指数
1
解决办法
1108
查看次数

工匠队列:工作和工匠视野:工作之间有什么区别?

我在Horizo​​n中使用Laravel队列和Redis。主管正在运行artisan horizon,这反过来会产生进程/usr/bin/php7.2 artisan horizon:work redis

是否需要完全运行queue:work,或者Horizo​​n 是否可以自行处理队列?

php symfony laravel laravel-5 laravel-horizon

7
推荐指数
1
解决办法
717
查看次数

运行Laravel Horizo​​n作为后台服务

我的问题是,运行Laravel Horizo​​n工作人员的最佳和简单方法是什么?

我的技术堆栈

  • Laravel 5.5
  • 地平线
  • Redis队列
  • Centos下

我已经阅读了文档https://laravel.com/docs/5.5/horizo​​n

如何在Supervisor配置上方的链接上提到设置以下主管

[program:horizon]
process_name=%(program_name)s
command=php /home/forge/app.com/artisan horizon
autostart=true
autorestart=true
user=forge
redirect_stderr=true
stdout_logfile=/home/forge/app.com/horizon.log
Run Code Online (Sandbox Code Playgroud)

注意:我有自己的自定义构建服务器和php 7.1,后来我安装了Horizo​​n来运行我的作业并维护队列.

有关如何运行Workers的任何建议或我应该在何处配置Supervisor配置

php laravel-queue laravel-jobs laravel-5.5 laravel-horizon

6
推荐指数
1
解决办法
4023
查看次数

如何编辑 Laravel 地平线视图

我只是安装了 laravel-horizo​​n 并且已经使用它进行了测试,一切正常,但是我不知道如何编辑 laravel 地平线视图,

在此处输入图片说明

以上是我的 laravel-horizo​​n 的概述,任何人都可以帮助我如何编辑它?

因为似乎laravel为此使用了vue js,而我并不是很熟悉

vue.js laravel-5 laravel-horizon

6
推荐指数
1
解决办法
1057
查看次数

Laravel Horizo​​n 抛出错误:调用未定义的函数 Laravel\Horizo​​n\Console\pcntl_async_signals()

我已经按照文档成功安装并设置了 laravel-horizo​​n

当我运行这个命令时php artisan horizon

它抛出以下错误:

Symfony\Component\Debug\Exception\FatalThrowableError :调用未定义函数 Laravel\Horizo​​n\Console\pcntl_async_signals()

在此输入图像描述

当我打开http://127.0.0.1:8000/horizo​​n/ dashboard 时,地平线仪表板状态始终处于非活动状态

在此输入图像描述

我使用 XAMPP ,PHP 版本 7.3.0 ,Laravel 版本 5.7

我已关注此链接:https://github.com/laravel/horizo​​n /issues/154#issuecomment-366712260

composer require ext-pcntl ext-posix

这是作曲家:

"require": {
        "php": "^7.1.3",
        "ext-pcntl": "^7.2",
        "ext-posix": "^7.2",
        "fideloper/proxy": "^4.0",
        "laravel/framework": "5.7.*",
        "laravel/horizon": "^2.0",
        "laravel/socialite": "^4.0",
        "laravel/tinker": "^1.0",
        "predis/predis": "^1.1",
    },
Run Code Online (Sandbox Code Playgroud)

我搜索了很多问题,但没有运气,也尝试过composer update --ignore-platform-reqs但仍然不起作用。

有人请帮助我在本地系统中运行 Laravel Horizo​​n

php xampp laravel laravel-horizon laravel-5.7

6
推荐指数
1
解决办法
1万
查看次数

Laravel Horizo​​n 限制和优化

Laravel Horizo​​n 中maxProcesses、 的数量supervisors和 s 的总数之间是否有任何经验法则或任何逻辑关系?queue

如果我有 15 个主管和 40 个队列(每个主管根据其类别有多个队列)怎么办?maxProcesses我可以分配给每个主管的最大数量是多少(假设平衡auto)?
我想知道是否有通过调整这些数字来获得更好性能的经验法则,例如,队列的数量是否supervisor-x不应超过队列总数,以及maxProcesses基于操作系统规范的数量是否不应超过特定数量运行进程。

这些数字之间有什么逻辑关系吗?有没有关于这个问题的好的文档?我已经在主管Laravel Horizo​​n 文档上看过这篇文档,但还没有找到我的问题的答案。

process worker supervisord laravel laravel-horizon

6
推荐指数
1
解决办法
1159
查看次数

Redis“从服务器读取行时出错。” Laravel 5.6升级后

今天升级到Laravel 5.6之后,我遇到了很多Redis错误,它们都说明:

Error while reading line from the server. [tcp://redis.localhost:6379] {"exception":"[object] (Predis\\Connection\\ConnectionException(code: 0): Error while reading line from the server. [tcp://redis.localhost:6379] at /var/www/manage.localhost/vendor/predis/predis/src/Connection/AbstractConnection.php:155)
Run Code Online (Sandbox Code Playgroud)

该应用程序堆栈包括:

  • Laravel 5.6
  • 地平线1.0.6
  • 回声1.3.2
  • Laravel Echo Server 1.3.6

在5.5上一切都运行顺利,我找到的所有文档似乎都无法解决这种情况。除了某些缓存使用之外,没有通过整个外观或应用程序中的服务容器使用Redis。

还有其他人遇到过吗?我已对升级指南以及GitHub发行说明进行了三遍检查,但没有发现任何可疑之处。基于堆栈跟踪,它似乎与Horizo​​n有关。

全栈跟踪

#0 /var/www/manage.localhost/vendor/predis/predis/src/Connection/StreamConnection.php(314): Predis\\Connection\\AbstractConnection->onConnectionError('Error while rea...')
#1 /var/www/manage.localhost/vendor/predis/predis/src/Connection/AbstractConnection.php(120): Predis\\Connection\\StreamConnection->read()
#2 /var/www/manage.localhost/vendor/predis/predis/src/Connection/AbstractConnection.php(112): Predis\\Connection\\AbstractConnection->readResponse(Object(Predis\\Command\\ListPopFirstBlocking))
#3 /var/www/manage.localhost/vendor/predis/predis/src/Client.php(331): Predis\\Connection\\AbstractConnection->executeCommand(Object(Predis\\Command\\ListPopFirstBlocking))
#4 /var/www/manage.localhost/vendor/predis/predis/src/Client.php(314): Predis\\Client->executeCommand(Object(Predis\\Command\\ListPopFirstBlocking))
#5 /var/www/manage.localhost/vendor/laravel/framework/src/Illuminate/Redis/Connections/Connection.php(96): Predis\\Client->__call('blpop', Array)
#6 /var/www/manage.localhost/vendor/laravel/framework/src/Illuminate/Redis/Connections/Connection.php(108): Illuminate\\Redis\\Connections\\Connection->command('blpop', Array)
#7 /var/www/manage.localhost/vendor/laravel/framework/src/Illuminate/Queue/RedisQueue.php(230): Illuminate\\Redis\\Connections\\Connection->__call('blpop', Array)
#8 /var/www/manage.localhost/vendor/laravel/framework/src/Illuminate/Queue/RedisQueue.php(213): Illuminate\\Queue\\RedisQueue->blockingPop('queues:events')
#9 /var/www/manage.localhost/vendor/laravel/framework/src/Illuminate/Queue/RedisQueue.php(165): Illuminate\\Queue\\RedisQueue->retrieveNextJob('queues:events')
#10 /var/www/manage.localhost/vendor/laravel/horizon/src/RedisQueue.php(92): Illuminate\\Queue\\RedisQueue->pop('events')
#11 /var/www/manage.localhost/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(246): Laravel\\Horizon\\RedisQueue->pop('events')
#12 /var/www/manage.localhost/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(107): Illuminate\\Queue\\Worker->getNextJob(Object(Laravel\\Horizon\\RedisQueue), 'events') …
Run Code Online (Sandbox Code Playgroud)

php redis laravel laravel-horizon

5
推荐指数
1
解决办法
1593
查看次数

在 Horizo​​n::terminate 并运行 Forge 守护进程后,Laravel Horizo​​n Supervisor 不会重新启动

Horizo​​n 运行良好,但直到最近,部署后,主管和队列工作人员不会再次启动,Horizo​​n GUI 显示“非活动”

为了让它们再次运行,我可以:

  • 从 forge 中重新启动守护进程工作程序
  • 重新启动主管/etc/init.d/supervisor restart

我的部署脚本包含php artisan horizon:terminate在其中。我还尝试过重置/清除及其组合。

当我在具有非活动地平线的命令中运行终止时,它似乎什么也没做。当我在 Horizo​​n Active 下运行相同的命令时,它会将其关闭,但守护进程不会重新启动 Supervisor。

守护进程在整个过程中运行没有任何错误。

应该终止并启动服务还是守护进程本身?

daemon redis laravel forge laravel-horizon

5
推荐指数
1
解决办法
6760
查看次数

Laravel Horizo​​n 不执行挂起的作业 - Kubernetes 和 Docker 环境

我们的 Laravel 应用程序在 Kubernetes 中有两个不同的 Pod,

  • 一个在端口 80 上运行的 apache,(CMD /usr/sbin/apache2ctl -D FOREGROUND)
  • 和另一个正在运行的工人(Laravel Horizo​​n)(CMD php /var/www/artisan horizo​​n)

问题是当我检查地平线仪表板时,它显示“活动”,我可以在“待处理作业”部分看到作业,但它们从未真正执行过。他们只是坐在那里闲着。

现在,当我在运行 apache 的 pod 中使用 SSH 并手动运行命令“php artisan horizo​​n”时,它实际上会执行所有挂起的作业。

我已经确保了以下几点:

  1. 两个 Pod 都连接到同一个 Redis 数据库服务
  2. 两个 Pod 的 Horizo​​n Prefix 相同

php laravel docker kubernetes laravel-horizon

5
推荐指数
3
解决办法
3353
查看次数