问题标签 [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.
laravel - Laravel Horizon 不读取会话
以一种简化的方式,我有 JOB 1 在会话中写入一个值,而 JOB 2 应该读取该值。使用队列:工作完美,但是当使用主管安装 Horizon laravel 时,它总是会出错,因为 JOB 2 在会话中找不到值。
我将redis用作会话,将其更改为文件和数据库进行测试,问题仍然存在。
在生产中,我关闭了 Horizon 并通过队列运行它:工作,它再次工作。
这是我第一次使用 Horizon,我有点迷茫。
laravel - laravel Horizon 将所有内容置于待处理状态
我和主管一起跑视野,但后来杀死了主管,我只是在跑步
我有 2 个队列和两个单独的主管。这是地平线配置。
在开发环境中进行测试时,horizon 会随机处理默认队列中的一项作业。默认队列保存由排队事件侦听器推送的作业,该侦听器除了将日志写入文件之外什么都不做。它随机工作并处理一项工作,然后一切都在地平线上挂起,从未处理过。如果我跑
然后重新启动 Horizon,有时它会处理 1 个作业,然后再次开始将所有内容置于待处理状态。
这是我的 redis 队列和数据库配置。
laravel - Laravel Horizon 工作人员不断无声地崩溃
我们正在运行 Laravel 7 和 Horizon 4.3.5。Horizon 与 Supervisor 一起运行。
我们配置了 10 个不同的队列,但负责一个特定队列的工作人员不断死亡,没有任何输出。top
重新启动 Horizon 后,我可以通过和ps
命令看到这些工作程序启动并运行了几秒钟。然后他们走了。
我检查了主管的stdout_logfile
:那里没有任何可疑之处。我可以看到与此队列相关的作业正在成功处理。每个工作人员在崩溃前恰好处理 2 个作业。
我检查了主管的stderr_logfile
,但它是空的。
Laravel 日志和failed_jobs
表格都是空的。
我什至检查过syslog
,但没有任何相关内容。
其他队列完全没有问题。只有这个特定的队列不断堆积:作业被应用程序推送到队列中,但在我重新启动 Horizon 之前从未处理过。
磁盘上有很多可用空间,可用 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
laravel - 如何在开发服务器上更改基本 url 水平 laravel
我的开发服务器使用 Nginx 作为路由器,Horizon API 与它配合得很好(例如https://service1.example.com/api/horizon),
但是,当我调用service1.example.com/horizon/时,我收到错误以加载水平面板和 UI 组件以加载资源调用http://localhost:84/vendor/horizon/app.js?id=8dd8716f3583c4b63da7
而不是service1.example.com/...
我还更改了环境中的基本 url,但我无法解决问题。我想知道如何修改 Horizon 面板的 base_url 以成功加载。感谢您阅读这个问题。
laravel - Laravel Queue Worker 在一段时间后停止作业处理,没有错误没有警告
我升级Laravel version from 7 to 8
了SupervisorCtl
. 每次重新启动后,一切正常,但所有那些balance=auto
在20 to 26 hours
. 日志中没有错误/警告,也没有追踪问题的线索。
我的 Web 服务器(Ubuntu 18.04 Lts)包含php 7.3
Apache
RAM 为 78GB,占用的 RAM 最大约为 35GB,因此不存在内存泄漏问题。
以下是我的 Horizon 和 SupervisorCtl 的配置
地平线配置
地平线配置
laravel-horizon - Laravel Horizon - 从队列中清除作业 - 调用 redis.replicate_commands()
- 地平线版本:5.7
- Laravel 版本:8.40
- PHP版本:7.4.22
- Redis 驱动和版本:predis/phpredis 3.2.12 & predis 1.1
- 数据库驱动程序和版本:
描述:
如何调用 redis.replicate_commands() ?
重现步骤:
解决方法:
php - Laravel 作业已尝试太多次或运行时间过长。该作业之前可能已超时
我正在使用 Laravel 8 和 Horizon 来异步跟踪付款。作业实现如下所示:
如果未检测到付款,我将等待最多 15 分钟来检测付款 - 一个单独的 cron 作业将订单更新为不同的状态,因此该作业在 15 分钟(或 15 次尝试,因为重新-queue 设置为 60 秒)
在我config/queue.php
的 redis 队列连接配置中设置如下:
我在这里看不到任何其他配置或config/horizon.php
关于最大尝试/超时。
我试图深入了解这一点,为什么某些工作会因此错误而失败:
App\Jobs\TrackOrderPayment 尝试次数过多或运行时间过长。该作业之前可能已超时。
关于这个主题的所有相关问题都说提出retry_after
并且我已经这样做了,它似乎没有帮助。
每次作业运行时,作业的实际“处理”时间小于 0.5 秒,如果未检测到付款,则会延迟 60 秒返回队列。
我在这里想念什么?
laravel - 未找到 Laravel 地平线类“Combindma\YotpoApi\Facades\YotpoApi”
那么我面临一个问题。我开发了一个包来处理 Yotpo(忠诚度和推荐服务)的 API 请求。在我的控制器中,我使用 Jobs 在后台对所有 API 调用进行排队。
问题是,如果我使用QUEUE_CONNECTION=sync
作业运行没有任何问题,因为它没有排队。但是,如果我将变量更改为QUEUE_CONNECTION=redis
Horizon,则会引发错误:
似乎在后台排队时找不到外观类。
对于参考我使用这个包:Yotpo 这是失败的工作:
laravel - 使用 Laravel 启动 Docker 容器时,*有时*会触发导致 HTTP 500 的“类视图不存在”
我们在一个 Docker 容器下运行 Laravel,其入口点(启动脚本)如下:
问题是有时,当容器启动时,每个请求都会抛出 HTTP 500。但是,在其他一些部署期间,容器会正常启动并按应有的方式处理请求。而且,当抛出 HTTP 500 错误时,只需要几分钟,然后请求就会被正常处理。发回此 HTTP 500 状态时,将显示以下错误:
在谷歌搜索此错误时,许多人指出 Composer 自动加载配置错误。但是,在我们的案例中,重启容器有时会解决问题,所以我认为可以排除这个原因。我唯一的猜测是,可能是 Horizon 和 php-fpm7.3 命令通过竞争条件相互冲突,但我不明白它们为什么会以及为什么会触发这些错误。
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
在整个站点中导航我完全没有问题。
向作业队列发送电子邮件时会出现此问题。所有发送的通知都会发生这种情况。除此之外,有时确实会发送电子邮件,但大多数时候不会发送。下面是其中一个通知的代码
在我自己的开发机器上本地一切正常。