问题标签 [laravel-horizon]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
653 浏览

laravel-horizon - 调用未定义的方法 Illuminate\Queue\RedisQueue::readyNow()

在 AutoScaler.php 80 处调用未定义的方法 Illuminate\Queue\RedisQueue::readyNow()

对于 Laravel 地平线

0 投票
1 回答
891 浏览

php - 跨链队列(Horizo​​n/Redis)的 Laravel 数据库事务

我已经为此搜索了几个小时,并且认为这可能根本不可能?如果我的队列链中的作业失败,我是否可以回滚到此时已发生的所有数据库事务。

注意:我知道在将作业异步推送到队列时上述方法不起作用,但是有没有办法获得这种效果?

0 投票
0 回答
91 浏览

laravel - 如何使用单个 Horizo​​n 实例监控服务器上所有站点的作业

我在一个 Laravel Forge 服务器上有多个(Laravel 5.8)站点。

与其在所有站点上安装 Horizo​​n,我宁愿让一个站点只运行 Horizo​​n 并进行一些基本身份验证。

所有站点都使用服务器上运行的同一个 Redis 实例。

我想通过这个单一的 Horizo​​n 仪表板监控在所有站点上创建的所有工作,但是我似乎无法让 Horizo​​n 看到其他站点创建的工作。

作业按预期运行,但未在 Horizo​​n 中显示。

  • 我尝试在HORIZON_PREFIXHorizo​​n 配置中删除 env 值,但这不起作用。
  • 我尝试HORIZON_PREFIX在 Horizo​​n 站点和REDIS_PREFIX其他站点上设置相同的值,但这也不起作用。

注意:其他站点根本没有运行 Horizo​​n(我想避免这种情况),它们只是以标准方式与 Redis 通信。

我错过了什么?

0 投票
1 回答
480 浏览

laravel - Laravel Horizo​​n:ErrorException:警告:PDO::prepare(): MySQL server has gone away

  • Laravel 版本:5.7.28
  • PHP版本:7.2.15
  • 数据库驱动程序和版本:MariaDB 10.2.23

我在使用 Horizo​​n 的生产服务器上遇到一个错误。

ErrorException: 警告: PDO::prepare(): MySQL server has gone away [internal] in unserialize

您可以在此处查看错误的堆栈跟踪:https ://sentry.io/share/issue/b105b7946b524a9e841f56f44445ea14/

据我所知,这个错误应该被 Laravel 框架捕获。我不确定为什么它没有被捕获并变成 QueryException ,然后会触发重新连接和/或杀死工人。

见:https ://github.com/laravel/framework/blob/9fb420cc29a7dd5de5051f09c523ffc3ea01b969/src/Illuminate/Database/Connection.php#L663

然后:https ://github.com/laravel/framework/blob/9fb420cc29a7dd5de5051f09c523ffc3ea01b969/src/Illuminate/Database/Connection.php#L735

我的理解是,任何异常都应该被捕获,然后作为 QueryException 重新抛出,然后由框架正确捕获,然后重新连接到数据库。

这是一个偶然的错误,因此很难重现;我试图手动抛出类似的错误,但它被正确捕获并正确处理。

任何关于为什么这个错误在生产中可能会有所不同的一般指导以及关于我如何隔离错误的想法都将不胜感激。

0 投票
1 回答
713 浏览

laravel - Laravel Horizo​​n:项目不再无故排队

我一直在 Laravel 伪造的预配置服务器上运行应用程序。我们有一些正在排队的电子邮件作业,我们使用 Horizo​​n 来管理我们的队列。这一直没有任何问题,但由于某种原因,我们破坏了一些东西,我无法修复它。

这是我们的设置。

.env

配置/queues.php

配置/horizo​​n.php

我检查了 redis-cli 信息结果以确保端口正确:

当我访问 /horizo​​n/dashboard 时,一切正常。我正在为排队的作业添加一些元数据到有效负载中,此时问题开始了。然后我再次删除了该代码,基本上回到了以前的代码库。没有区别了,所以我现在怀疑我还有另一个问题。

但是 - 当我向队列中添加一些东西时,我没有抛出任何异常。Bugsnag 没有新条目,我的过程继续进行,没有任何错误。

知道我可以验证什么来检测实际问题吗?是不是配置有问题?老实说,我有点失落,尤其是因为我没有可使用的信息:(

我还使用 tinker 检查了我是否可以与 redis 建立连接,并且它也可以正常工作,无一例外:

0 投票
1 回答
2286 浏览

php - Laravel Horizo​​n 限制总进程数

在阅读了很多关于 Laravel Horizo​​n 和 Redis 队列的帖子(比如来自 Zechariah Campbell 的这篇文章)并尝试配置和自定义它之后,我无法确定是否可以最大化 laravel Horizo​​n 运行的进程总数。

使用“简单”策略并且每个队列有一个进程(这是我想要的)可能会在拥有 1000 个队列而导致 1000 个进程运行时导致 cpu 或内部内存问题?(默认情况下,每个队列都有自己的进程)

无论队列数量如何,有什么方法可以最大化 Horizo​​n 产生的进程总数?所以 10 个进程和 20 个队列,当一个队列是空的,或者甚至更好地处理了一个队列的一项工作时,工作人员会选择另一个队列吗?

我目前的配置

地平线.php

队列.php

laravel 5.8 和地平线 3.0

目前我使用 beanstalkd,但由于缺少 beanstalkd 的维护和一些讨厌的错误,我想迁移到带有 Horizo​​n 的 redis 队列。

更新 2019-05-17:

我尝试了配置 maxProcesses:

但即便如此,也会创建三个进程,每个队列一个。 在此处输入图像描述

0 投票
2 回答
2361 浏览

php - Laravel Horizo​​n - 工作模型中的设置,如“retryAfter”、“tries”或“timeout”不起作用

我正在运行 Laravel Horizo​​n,但我注意到 Job 模型中的设置喜欢public $retryAfterpublic $triespublic $timeout工作(Laravel 文档:https ://laravel.com/docs/5.8/queues#dealing-with-failed-jobs )。

例如,要重试失败的作业 4 次,则:

不起作用,但可以'tries' => 4horizon.php配置文件中设置:

为什么这些基于每个作业的设置不适用于 Horizo​​n 并且不会覆盖常规设置?

谢谢你。

0 投票
1 回答
1641 浏览

php - Laravel Horizo​​n - 不同守卫的大门

我想使用管理员守卫来授权查看 laravel 地平线,但我必须以用户和管理员身份登录。

这是我的 Horizo​​nServiceProvider.php 代码

如果我以使用和管理员身份登录,它可以正常工作。但是,当我仅以管理员身份登录时,gate 的结果是:

感谢帮助

0 投票
1 回答
828 浏览

php - Laravel 自动重试失败通知

我使用 Laravel Horizo​​n 并将通知按如下方式排列:

问题是发生错误时,Horizo​​n 不会自动重试。这个怎么做?

0 投票
1 回答
306 浏览

php - 同一服务器上的多个 Laravel Horizo​​n

我通过 Forge 在一台服务器上运行两个 Laravel 5.8 应用程序(yasmin 和 stcc),并且我"laravel/horizon": "^3.2"在这两个网站上都使用。php artisan horizon我通过两个目录上的 Forge Daemons 命令启动并保持队列工作人员正常运行。

在网站.envhorizon.php配置文件中,我设置了唯一的队列名称和前缀,因此作业不会混合,另外我将内存限制更改为 32MB(到目前为止,我只使用作业发送电子邮件)。

它工作正常,只有我有一些问题,因为我看到了一些差异和奇怪的行为。

第一个问题:为什么我在 stcc Horizo​​n 仪表板上看不到“CPU Threads”和“Memory”列,而在 yasmin 仪表板上它什么也没显示?

优思敏 优思敏

stcc stcc

第二个问题:为什么htop命令显示进程使用128MB内存?

htop htop

在运行 Horizo​​n 之前,我重新启动了整个服务器并使用命令清除了两个 laravel 配置php artisan optimize,但是这两件事仍然困扰着我。