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

laravel - Laravel Horizo​​n - 删除特定作业

我遇到了垃圾邮件发送者攻击 Laravel 网站并发送许多私人消息的不幸事件,我们愚蠢地没有限制您可以 CC 到一条消息中的人数,这意味着一次发送了数千人的消息。

当有人收到 PM 时,会发送一封电子邮件,现在我们的 Laravel Horizo​​n 队列中有数千个作业。我想删除所有这些工作,同时保留其他工作。

QUEUE_CONNECTION设置为redis所以它们都存在于redis中。

我在 Laravel 中找不到任何方法来遍历现有的排队作业并删除它们?

需要明确的是,我在队列中有工作,例如: App\Domain\Auth\Notifications\ActivateAccountNotification App\Domain\Auth\Notifications\ResetPasswordNotification App\Domain\Shop\Notifications\PaypalFailureNotification App\Domain\Graphics\Notifications\GraphicSubmissionStatusNotification App\Domain\Messages\Notifications\NewMessageNotification

我只想删除: App\Domain\Messages\Notifications\NewMessageNotification

有没有办法做到这一点?

0 投票
1 回答
1479 浏览

laravel - 如何在 laravel 中链接 Bus::chain()

我有三个 Laravel Parent 工作名称

他们每个人都用 for 循环调用子作业

现在我正在考虑删除父工作并链接所有子工作总线

0 投票
1 回答
1998 浏览

laravel - Laradock - PHP Redis 扩展已安装并启用

我正在尝试在 Laradock 上启用 Horizo​​n,但我总是收到此消息“请确保已安装并启用 PHP Redis 扩展” 我已访问 Workspace 容器以检查是否安装了 php-redis 扩展。但是你可以看到图像 php-redis 已经是最新版本 docker-compose exec workspace bash

我已经打开了 Laravel 项目的 .env 并进行了如下更改

我还打开了 Laradock 文件夹中的 .env 文件并启用所有INSTALL_PHPREDIS=true. 之后,docker-compose build --no-cache workspace php-fpm php-worker

这是Laradock文件夹的 .env 文件

但是 php-redis 扩展仍然是错误的

我找到了一些安装 predis 的答案但我不想使用它。我想使用phpredis并保存'client' => env('REDIS_CLIENT', 'phpredis')在 config/database.php

有没有人遇到这个问题,请帮助我。太感谢了

0 投票
1 回答
60 浏览

php - Gate 将身份验证模型设置为使用自定义保护时身份验证回调的第二个参数

  • 地平线版本:^5.7
  • Laravel 版本:^8.18
  • PHP 版本:^8.0
  • Redis 驱动和版本:predis/phpredis ^1.1

描述:

当我尝试为我的授权逻辑使用自定义保护时,我能够从第二个回调参数而不是第一个参数访问经过身份验证的对象。

重现步骤:

这是正常的行为吗?还是我做错了什么?

0 投票
1 回答
295 浏览

laravel - 通过 CRON 在共享主机上运行 Laravel Horizo​​n

我正在 Laravel 8 上运行一个应用程序构建。这个应用程序处理大量的工作。这就是为什么我的队列存储在 Redis 中并由 Laravel Horizo​​n 处理。

由于我在共享主机上,我无法访问 Supervisord(或任何进程管理器)。

我问社区是因为我找不到任何关于我的案例的首选配置的建议或建议。

克朗

* * * * * php artisan schedule:run >/dev/null 2>&1

控制台/内核.php

$schedule->command('horizon')->everyMinute()->withoutOverlapping();

通过 CRON 保持 Horizo​​n 活动的首选方法是什么?

防止 Horizo​​n 重复进程(并防止内存泄漏)的首选方法是什么?

0 投票
1 回答
374 浏览

laravel - laravel 地平线上的尝试和重试有什么区别?

在尝试调试一些奇怪MaxAttemptsExceededException的错误时,我在地平线屏幕上偶然发现了一个奇怪的东西。

对于失败的工作,它显示

这意味着,该作业尝试了 5 次,但从未重试。

这是地平线错误吗?如果不是如何克服这个问题?

我有

我正在使用 laravel 8.30.1 和 Horizo​​n 5.7.0

0 投票
0 回答
243 浏览

laravel - Laravel Horizo​​n 作业在分派几个作业后停止分派作业

我运行一个队列,它将分派数千个作业。但是在派遣了一些工作(如 200 个工作)之后,工作停止了派遣。

为什么这些作业停止调度,我该如何运行这些停止的作业?

我在 redis 连接上分派多个名为 SimpleJob 的作业。

  • PHP 版本 (7.4)
  • 拉拉维尔 8
  • Laravel 地平线 5.7
  • Redis 服务器 ^5.7

配置/horizo​​n.php

配置/队列.php

配置/数据库.php

Horizo​​n 仪表板 Horizo​​n 待处理作业选项卡

0 投票
2 回答
625 浏览

php - 如何在 laravel 中设置 Horizo​​n 以减少 CPU 使用率?

我正在使用 laravel Horizo​​n 来监控我的队列。我只有两个队列,我在我的实例上使用 redis 和 supervisor。micro当我的 ec2 实例是或者nano我必须使用实例时它不起作用,small之后我将进程数从 5 减少到 1。现在它正在处理 nano 实例。但由于后台进程只有两个工作,我认为它也应该在微实例上工作。请看看我的horizo​​n.php和supervisor conf文件,如果我能做更多,请告诉我

主管会议

0 投票
0 回答
323 浏览

laravel - 使用 redis + Horizo​​n 时 laravel 限速作业如何工作

我目前正在开发一个应用程序,其中许多作业在后台运行,例如发送通知电子邮件。现在我需要对工作进行限速,以防止电子邮件服务提供商指责我们的帐户在几秒钟内发送了太多电子邮件。我的解决方案是使用Redisspatie job rate-limiterlaravel horizo​​n来管理排队的作业。

这是带有 spatie 作业速率限制器的试用提醒作业的示例处理方法。

这是 Horizo​​n Queue Worker 配置:

和 Redis 配置:

现在,每次我触发trial:reminder命令php artisan trial:reminder时,它都会在 app log 上分派作业而不会出现问题worker.log。但是,在 Horizo​​n 仪表板上有 6 个失败的作业。看看这里的截图地平线仪表板

这是worker.log应用程序内文件中的结果。

正如您在中间件函数中看到的那样,我希望速率限制器作业能够处理5 jobs every 10 seconds,以便它可以发送5 emails every 10 seconds. 有没有人给我一个提示来指导工人发送5 emails every 10 seconds请在下面评论并提前感谢。

0 投票
0 回答
116 浏览

laravel - Laravel 7 通过 AWS SES 发送电子邮件

通过 AWS SES 发送电子邮件时,我遇到了一个非常奇怪的问题。有些电子邮件会发送,有些则不会发送。我所有的电子邮件都作为后台进程运行,当我检查 Horizo​​n 时,它表明作业已执行且没有错误,但我没有收到电子邮件。

在 AWS 上也没有跟踪发送的电子邮件的日志。

所有的电子邮件都在发送,现在只是偶尔发送。

如果我能找出这些电子邮件发生了什么,那就太好了。

任何有关此事的帮助将不胜感激

谢谢丹尼