问题标签 [laravel-jobs]
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.
php - 如何测试使用尝试功能的 laravel 作业的第二次尝试逻辑
我有一个排队的作业类,由于该backoff()
方法,它呈指数级后退。我想测试该backoff()
方法是否正确。它应该2, 4, 8, 16
在每次重试后创建等等。由于attempts()
函数属于特征并从更深的类的有效负载InteractsWithQueue
中读取尝试计数,我找不到合适的方法来测试它。RedisJob
decoded
有什么帮助吗?
laravel - 如何在循环中调度链式作业?
我正在尝试在 foreach 循环中调度 Laravel 作业。但问题是,当我在循环内调度作业时,有时它会在作业完成之前完成。我想要的是工作应该一个一个地完成。就像发生在链方法中一样。但是我如何在 foreach 循环中链接相同的工作?这可能吗?
laravel - 如何在 laravel 中链接 Bus::chain()
我有三个 Laravel Parent 工作名称
他们每个人都用 for 循环调用子作业
现在我正在考虑删除父工作并链接所有子工作总线
laravel - 在 Laravel 中动态配置数据库连接
在 Laravel 8 中,我试图在两种情况下设置动态连接:
- 登录后,根据用户设置自定义数据库连接。
在这种情况下,登录后,我在中间件中调用一个方法:
这很完美,连接也很完美。
- 我需要在工作中运行一些进程。所以我需要访问每个用户数据库,我尝试执行相同的过程,但我不断收到错误消息:
local.ERROR: SQLSTATE[HY000] [2002] 没有这样的文件或目录(SQL:select ... 为空){“异常”:“[对象](Illuminate\Database\QueryException(代码:2002):SQLSTATE[HY000 ] [2002] /app/vendor/laravel/framework/src/Illuminate/Database/Connection.php:671 中没有这样的文件或目录(SQL:select ... 为空)
有什么想法吗?,我猜在工作中,因为它在控制台中运行,所以程序不同?
laravel - 检查一秒钟内处理了多少作业?
我正在尝试使用Redis实现速率限制。我需要调用一个 TPS 为 100 或每秒可调用 100 次的 API。我有一个限制,我不能调用 API 进行测试。如何测试我的 API 在一秒钟内被调用的次数不超过 100 次?
mysql - 如何优化循环内的laravel作业
作业(队列)中有一个函数。我调度那个队列。每个循环的内部。
作业内部的功能是
现在的问题是这个函数中有大约 20,30 个查询。我必须派遣这项工作大约 25000 次。当它达到200个工作岗位时。我的 aws DB CPU 利用率达到 100%。
现在我正在寻找一个可以增加数据库实例大小的最佳解决方案,但我认为这不是一个解决方案。
我可以在这里使用什么好的做法?
laravel - 使用 redis 的 php 单元测试有分段错误
最近我买了一个带有m1芯片的mac。当我使用 php8 在 laravel 8 项目中运行我的 phpunit 测试时,我收到以下错误消息:
它看起来与 redis 相关,因为只有使用 redis 的测试才会出错(例如作业)。我的 redis 驱动程序是[phpredis][1]
.
我不知道如何解决这个问题,它曾经在我的旧 Mac 上工作。我通过pecl安装了phpredis。
有什么想法可以解决这个问题吗?
谢谢!
laravel - 如何配置队列工作者、连接和限制器以避免作业失败
我的项目使用了几个强制请求限制的 3rd 方 API。我的项目通过 Laravel Jobs 调用这些 api。我正在使用Spatie/aravel-rate-limited-job-middleware进行速率限制
提交项目后,平均会派出约 60 个工作岗位。这些作业需要执行为 1 Job/Minute
有一个 supervisord 程序正在运行默认队列的 2 个进程,并且--tries=3
我config/queue.php
正在使用 redis'retry_after' => (60 * 15)
来避免在作业执行时重试。
我当前的速率限制器中间件是这样编码的
发生的情况是 3 分钟内处理了 3 个作业,但之后所有作业都失败了。
我能理解的是,所有作业每分钟都会重新排队,一旦它们超过尝试阈值 (3),它们就会被移动到 failed_jobs。
我尝试删除--tries
标志,但没有奏效。我也尝试增加--tries=20
,但 20 分钟后作业失败。我不想对--tries
标志进行硬编码,因为在某些情况下可以分派超过 100 个工作。
我还想在主管中增加队列工作进程的数量,以便很少有作业可以并行执行。
我知道这是配置重试、超时标志的问题,但我不明白怎么做。需要帮忙...
laravel - Laravel 作业正在处理但没有做任何事情
我已经检查了有关此问题的多个答案,但似乎没有适当的解决方案。我正在解雇一份工作,它在模式下运行良好,但在驱动程序sync
中根本不工作。database
队列.php
.env
我是如何解雇这份工作的。我尝试删除onConnection('database')
,但它会在sync
驱动程序上运行
我正在执行以下命令来监听
当我解雇这份工作时,它会被写入jobs
表格,几秒钟后,它会变成processed
. 问题是:它没有开火。如果我删除onConnection('database')
它,它可以在sync
没有任何问题的模式下工作。
里面的例子handle()
发送消息API
我正在使用 xampp 在本地主机上运行它。任何想法为什么它实际上没有发射?我检查了payload
数据库表中的列jobs
,它是正确的。