问题标签 [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 回答
53 浏览

laravel - Laravel Horizo​​n 不读取会话

以一种简化的方式,我有 JOB 1 在会话中写入一个值,而 JOB 2 应该读取该值。使用队列:工作完美,但是当使用主管安装 Horizo​​n laravel 时,它总是会出错,因为 JOB 2 在会话中找不到值。

  • 我将redis用作会话,将其更改为文件和数据库进行测试,问题仍然存在。

  • 在生产中,我关闭了 Horizo​​n 并通过队列运行它:工作,它再次工作。

这是我第一次使用 Horizo​​n,我有点迷茫。

0 投票
0 回答
455 浏览

laravel - laravel Horizo​​n 将所有内容置于待处理状态

我和主管一起跑视野,但后来杀死了主管,我只是在跑步

我有 2 个队列和两个单独的主管。这是地平线配置。

在开发环境中进行测试时,horizo​​n 会随机处理默认队列中的一项作业。默认队列保存由排队事件侦听器推送的作业,该侦听器除了将日志写入文件之外什么都不做。它随机工作并处理一项工作,然后一切都在地平线上挂起,从未处理过。如果我跑

然后重新启动 Horizo​​n,有时它会处理 1 个作业,然后再次开始将所有内容置于待处理状态。

这是我的 redis 队列和数据库配置。

0 投票
1 回答
337 浏览

laravel - Laravel Horizo​​n 工作人员不断无声地崩溃

我们正在运行 Laravel 7 和 Horizo​​n 4.3.5。Horizo​​n 与 Supervisor 一起运行。

我们配置了 10 个不同的队列,但负责一个特定队列的工作人员不断死亡,没有任何输出。top重新启动 Horizo​​n 后,我可以通过和ps命令看到这些工作程序启动并运行了几秒钟。然后他们走了。

我检查了主管的stdout_logfile:那里没有任何可疑之处。我可以看到与此队列相关的作业正在成功处理。每个工作人员在崩溃前恰好处理 2 个作业。

我检查了主管的stderr_logfile,但它是空的。

Laravel 日志和failed_jobs表格都是空的。

我什至检查过syslog,但没有任何相关内容。

其他队列完全没有问题。只有这个特定的队列不断堆积:作业被应用程序推送到队列中,但在我重新启动 Horizo​​n 之前从未处理过。

磁盘上有很多可用空间,可用 RAM,CPU 使用率很低。

工人命令:/usr/bin/php7.4 artisan horizon:work redis --delay=0 --memory=128 --queue=main --sleep=3 --timeout=1800 --tries=1 --supervisor=php01-Mexm:business

0 投票
0 回答
91 浏览

laravel - 如何在开发服务器上更改基本 url 水平 laravel

我的开发服务器使用 Nginx 作为路由器,Horizo​​n API 与它配合得很好(例如https://service1.example.com/api/horizo​​n),

但是,当我调用service1.example.com/horizo​​n/时,我收到错误以加载水平面板和 UI 组件以加载资源调用http://localhost:84/vendor/horizon/app.js?id=8dd8716f3583c4b63da7而不是service1.example.com/...

水平面板

我还更改了环境中的基本 url,但我无法解决问题。我想知道如何修改 Horizo​​n 面板的 base_url 以成功加载。感谢您阅读这个问题。

0 投票
0 回答
401 浏览

laravel - Laravel Queue Worker 在一段时间后停止作业处理,没有错误没有警告

我升级Laravel version from 7 to 8SupervisorCtl. 每次重新启动后,一切正常,但所有那些balance=auto20 to 26 hours. 日志中没有错误/警告,也没有追踪问题的线索。

我的 Web 服务器(Ubuntu 18.04 Lts)包含php 7.3 ApacheRAM 为 78GB,占用的 RAM 最大约为 35GB,因此不存在内存泄漏问题。

以下是我的 Horizo​​n 和 SupervisorCtl 的配置

地平线配置

地平线配置

0 投票
0 回答
103 浏览

laravel-horizon - Laravel Horizo​​n - 从队列中清除作业 - 调用 redis.replicate_commands()

  • 地平线版本:5.7
  • Laravel 版本:8.40
  • PHP版本:7.4.22
  • Redis 驱动和版本:predis/phpredis 3.2.12 & predis 1.1
  • 数据库驱动程序和版本:

描述:

复制命令而不是脚本

如何调用 redis.replicate_commands() ?

重现步骤:

解决方法:

0 投票
1 回答
578 浏览

php - Laravel 作业已尝试太多次或运行时间过长。该作业之前可能已超时

我正在使用 Laravel 8 和 Horizo​​n 来异步跟踪付款。作业实现如下所示:

如果未检测到付款,我将等待最多 15 分钟来检测付款 - 一个单独的 cron 作业将订单更新为不同的状态,因此该作业在 15 分钟(或 15 次尝试,因为重新-queue 设置为 60 秒)

在我config/queue.php的 redis 队列连接配置中设置如下:

我在这里看不到任何其他配置或config/horizon.php关于最大尝试/超时。

我试图深入了解这一点,为什么某些工作会因此错误而失败:

App\Jobs\TrackOrderPayment 尝试次数过多或运行时间过长。该作业之前可能已超时。

关于这个主题的所有相关问题都说提出retry_after并且我已经这样做了,它似乎没有帮助。

每次作业运行时,作业的实际“处理”时间小于 0.5 秒,如果未检测到付款,则会延迟 60 秒返回队列。

我在这里想念什么?

0 投票
0 回答
14 浏览

laravel - 未找到 Laravel 地平线类“Combindma\YotpoApi\Facades\YotpoApi”

那么我面临一个问题。我开发了一个包来处理 Yotpo(忠诚度和推荐服务)的 API 请求。在我的控制器中,我使用 Jobs 在后台对所有 API 调用进行排队。

问题是,如果我使用QUEUE_CONNECTION=sync作业运行没有任何问题,因为它没有排队。但是,如果我将变量更改为QUEUE_CONNECTION=redisHorizo​​n,则会引发错误:

似乎在后台排队时找不到外观类。

对于参考我使用这个包:Yotpo 这是失败的工作:

0 投票
0 回答
82 浏览

laravel - 使用 Laravel 启动 Docker 容器时,*有时*会触发导致 HTTP 500 的“类视图不存在”

我们在一个 Docker 容器下运行 Laravel,其入口点(启动脚本)如下:

问题是有时,当容器启动时,每个请求都会抛出 HTTP 500。但是,在其他一些部署期间,容器会正常启动并按应有的方式处理请求。而且,当抛出 HTTP 500 错误时,只需要几分钟,然后请求就会被正常处理。发回此 HTTP 500 状态时,将显示以下错误:

在谷歌搜索此错误时,许多人指出 Composer 自动加载配置错误。但是,在我们的案例中,重启容器有时会解决问题,所以我认为可以排除这个原因。我唯一的猜测是,可能是 Horizo​​n 和 php-fpm7.3 命令通过竞争条件相互冲突,但我不明白它们为什么会以及为什么会触发这些错误。

0 投票
1 回答
50 浏览

laravel - 仅在 laravel 调度的作业中出现 RelationNotFoundException 错误

我在 laravel 7 中有一个非常奇怪的错误,我在用户模型中定义了一个名为 user_badge 的 hasOne 关系

我已将 user_badge_id 添加到 users 表中,并且还创建了包含徽章信息的 user_badges 表。当作业在后台运行时,我收到以下错误

Illuminate\Database\Eloquent\RelationNotFoundException:调用模型 [App\User] 上的未定义关系 [userBadge]。在 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/RelationNotFoundException.php:34

在整个站点中导航我完全没有问题。

向作业队列发送电子邮件时会出现此问题。所有发送的通知都会发生这种情况。除此之外,有时确实会发送电子邮件,但大多数时候不会发送。下面是其中一个通知的代码

在我自己的开发机器上本地一切正常。