问题标签 [laravel-queue]

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 投票
1 回答
810 浏览

php - 我应该使用 Laravel 队列来管理我的应用程序中的线程吗

我正在寻找多个 3rd 方 API 来收集用户搜索查询的信息。我计划为每个我想要访问的 API 分拆一个线程,以最大限度地减少我的响应时间。由于内存/cpu 问题,我还想限制我的应用程序在任何时候可以运行的线程数量。

由于我使用 Laravel 作为我的框架,因此我试图使用 Laravel 队列来完成此任务,但似乎我可能无法从作业中获取响应数据。

  • laravel 队列是解决这个问题的正确方法吗?如果是这样,我如何监听作业的状态并在作业完成后检索数据?我看到了一些指向将关闭传递给工作的东西,但有些东西对我来说并不合适。
0 投票
1 回答
5904 浏览

php - 在 Laravel 队列/重命名作业表中自定义作业和作业表

当我尝试php artisan queue:table 它给了我以下错误

这是因为我已经CreateJobsTable为其他目的命名了迁移。我无法重命名此表和迁移。有没有办法将迁移重命名为CreateJobsQueueTable或相关的东西?

我们可以重命名 artisan 使用“queue:table”创建的工作表吗?

0 投票
0 回答
1243 浏览

php - Laravel 5.3 队列在共享主机中不起作用

在我的 Laravel 5.3.* 应用程序中,我在后台运行队列。这在我的本地机器上工作得很好。但是,当它在服务器(共享主机)上运行时,它根本不起作用。

这是场景:

  1. 管理员正在提交管理员生成器表单数据。

  2. 数据被插入到数据库中。

  3. 拍摄有关相同的电子邮件。

所以,为了让这个功能顺利进行,我在服务器的 cPanel 上创建了一个 cron 作业。

这是 cron 作业:

这是app/Console/Kernel.php文件内容

我还通过运行创建了作业数据库

生成/插入管理员时,会触发一个事件:

这将向提供的电子邮件 ID 发送一封欢迎电子邮件(in app/Listeners/AdministratorHasBeenGenerated/SendWelcomeEmail.php

这是 .env 文件中的邮件配置

我没有收到任何错误或类似的东西,但即使我提供了正确的电子邮件 ID,我也没有收到任何欢迎电子邮件。


更新 1:2017 年 12 月 21 日

只是一种解决方法,因为我找不到这个问题的实际解决方案。我所做的是我为运行队列创建了另一个 cron 作业。

这将queue:work每分钟触发一次命令(或您在 cPanel 的 cron 作业选项卡中设置的任何内容)..

我猜上述解决方案不正确。欢迎更正/修正。


任何人都可以指出我必须在哪里和做什么的错误吗?已经4个多小时了,我找不到任何解决方案。

非常感谢任何帮助。谢谢。

0 投票
1 回答
1043 浏览

laravel - 无法让 Cron 作业完美运行

我使用 Laravel/Lumen。我设置了一个简单的工作来发送短信:

现在,每当记录保存在我的控制器中时,我都会调度作业:

现在我的 kernel.php 中有以下设置:

在我的 cPanel 中,我设置了以下 cron 作业:

上面的命令设置为每分钟运行一次。

问题 这个设置根本不适合我。在我的 Bluehost VPS 上,它导致我的服务器多次崩溃,迫使我重新启动。显然它占用了这么多内存,我不明白为什么,支持也无法帮助我。让我澄清一下,它有效,但导致我的服务器每天至少崩溃两次。

所以认为这与我的托管有关,我在其他地方(SiteGround)购买了另一个托管。现在我什至无法让 cron 工作。每次 cron 执行时都会发送到我的邮件:

现在我不知道是什么原因造成的,也不知道如何解决。我相信我已按照文档中的所有说明进行操作,并且无法判断我在这里做错了什么。我已经完成了研究并联系了两家托管公司的支持人员,但仍然......

这是我从支持人员那里收到的最后一条消息:

我尝试运行 cron 几次,但它没有任何预定的命令要运行:

此外,我再次增加了限制。我为脚本的执行设置了 300 秒和 2048MB memory_limit。

请再试一次,如果您需要任何帮助,请不要犹豫更新票证。

Lumen和jobs有什么问题吗?我在 Laravel 5.1 中成功运行命令这里发生了什么。

或者,如果有更简单或有效的方法可以通过 cron 使用常规 PHP 执行此脚本,请告诉我如何。

0 投票
3 回答
513 浏览

php - 从 Supervisord 调用 Laravel 脚本时找不到类

我正在使用 Laravel 工作人员来执行一些后台任务。当我使用 'php artisan queue:work' 调用工作人员时,它可以正常工作

但是当我在 CentOS 中将相同的命令添加到 supervisord 时,使用以下配置:

[程序:laravel-worker]

process_name=%(program_name)s_%(process_num)02d command=php

/var/www/html/laravel/工匠队列:工作

自动启动=真

自动重启=真

用户=根

numprocs=8

重定向标准错误=真

stdout_logfile=/var/www/html/laravel/worker.log

我收到以下错误:

PHP 致命错误:在第 169 行的 /var/www/html/laravel/app/External/library/RegistrationServi‌​ce.php 中找不到类“SoapClient”

[Symfony\Component\Debug\Exception\FatalErrorException] 类 'SoapClient' 未找到

作业未执行,抱怨未找到 SoapClient(尽管已安装)。SoapClient 类由我在外部加载的普通 PHP 类继承。

请注意,当从命令行执行时,我可以通过控制器或作业使用此类,而不会出现任何问题,只有在 supervisord 中它才会给我错误消息。更奇怪的是,它只发生在一个使用这个外部类的作业上,它不会发生在只使用 Laravel 的类(控制器、事件等)的作业上。

0 投票
1 回答
1175 浏览

php - 如何防止排队作业失败后执行?

我已将我的主管工作人员配置为在失败的情况下尝试 laravel 排队作业 3 次。以下是我的工作人员配置示例。

但是我确实有一个特定的 laravel 作业队列,无论是否失败,我都只想执行一次。如果在不更改我的工作人员配置的情况下出现故障,我想防止将来尝试执行作业。

下面是我的工作类的结构。

任何帮助将不胜感激!:)

0 投票
1 回答
1892 浏览

php - 如何在 Laravel 5.4 的队列中传递函数?

我正在使用 Laravel 5.4 队列。我想在几秒钟后阅读 Excel 并在数据库中输入该记录。

这是我的调用函数,首先我可以这样通过吗?

0 投票
2 回答
2484 浏览

php - Laravel 排队的作业运行时间比超时时间长很多分钟

我有一个从网页中提取链接的 Laravel 排队作业。通过 Laravel Forge 配置的 Queue 监听器的超时时间是 240 秒(4 分钟)。但是,作业最多需要45 分钟才能运行。

我的队列设置是:

并且有多个作业进程在运行——多达35 个进程。可以想象,这会占用大量服务器内存。这些过程似乎只是徘徊。这些进程的命令如下所示top

如果超时为 240 秒,一个作业如何运行 45 分钟?为什么会有这么多流程——不应该只有一个吗?

此外,任何想法为什么提取链接的脚本需要 45 分钟才能运行?

该脚本确实有效,也就是说,在大多数情况下,它按预期运行——它只需要很长时间。据我所知,没有报告/记录错误。

工作中的代码是:

更新:另一个简单的工作运行得很好,不到一秒钟。特别是上面的链接作业​​需要 10 分钟。可能是RAM问题还是什么?我还能做些什么来诊断问题吗?作为控制台作业的一部分运行时,提取链接功能本身会在 1 或 2 秒内运行。它只是在队列中吓坏了。

0 投票
2 回答
17719 浏览

php - Laravel 队列:重启不会杀死工人

我有一个通过 envoyer 部署到非伪造服务器的 laravel 5.4 应用程序。我在数据库驱动程序上运行队列工作程序,使用主管进行监控,按照文档中的描述进行设置;

并使用特使部署挂钩

问题是,在每次部署之后,队列工作人员都没有重新启动,旧的工作人员继续运行,然后抛出错误,因为他们正在处理以前版本的代码。从 CLI 手动运行 queue:restart 也不起作用。

如果我手动找到并杀死 8 个正在运行的进程,主管确实会正确重新启动它们,并且我的排队作业会再次工作。

谁能想到任何可能阻止这些工人被杀的事情?storage/logs/laravel.log 中没有任何相关内容

0 投票
3 回答
2319 浏览

laravel - 对 Laravel 5 发送邮件的队列感到困惑(Laravel 5.4)

我从 Laravel 升级4.15.4. 队列迁移很困难。

首先,我从路线中注释掉iron路线:

然后,我配置了数据库驱动程序并迁移了jobs表:

我将Mail::queue代码更改为 Mailables,如下所示:

我成功同步发送邮件(没有队列)。然后,我切换到队列:

最后,我从控制台运行这个命令:

执行Mail::to一行时,会向Jobs表中插入一行,但不发送邮件。我怎么解决这个问题?

注意:ForgotPassword是一个Mailable类(应该是一个Job类?)。