问题标签 [pheanstalk]

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 投票
2 回答
1656 浏览

beanstalkd - 与 Pheanstalk 的陈旧联系

我正在使用 beanstalkd 将一些工作卸载到其他机器上。设置有点不寻常,服务器在互联网上(公共 ip),但消费者在某些人家中的 adsl 线路后面。所以有一个 linux 服务器作为客户端,通过一个动态 ip 出去并连接到服务器以获得工作。这都是 PHP,我正在使用 pheanstalk 库。

一切顺利运行了一段时间,但随后adsl更改了IP(每24小时提供商强制断开重新连接)客户端只是挂起,永远不会超出“保留”。

我认为对储备设置超时会有所帮助,但事实并非如此。看起来,客户端发出命令并阻止,它从不检查超时。它只是发出一个带有超时的保留(而不是简单的保留),并且服务器有责任在超时发生时返回一个 TIME_OUT。问题是,连接断开了(但 TCP/IP 直到任何一方尝试与另一方交谈才知道这一点),如果客户端阻止读取,它将永远不会返回。

该库似乎支持某种本地超时(例如尝试连接到服务器时),但它似乎没有考虑这种情况。

我怎样才能检测到陈旧的连接并强制重新连接?协议(以及 pheanstalk 本身)上是否有某种保活?

谢谢!

0 投票
1 回答
745 浏览

php - pheanstalk 使用Tube()->put() 函数,不等待响应

我目前有以下内容:

这工作正常,但我希望它$pheanstalk->useTube($tube)->put($data)不等待来自服务器的连接响应,并且只会尝试将数据放在队列中,然后继续以愉快的方式继续。该服务存储的数据很不错,但并不重要。因此,在重负载期间,我希望不必等待超时时间才能继续执行程序的其余部分。如何消除等待 pheanstalk 的服务器部分的响应?

0 投票
2 回答
1663 浏览

php - Beanstalkd(通过 pheanstalk)允许重复的同时保留?

试图将 Pheanstalk 包装在我的 PHP 作业基类中。我正在测试具有延迟功能的保留和保留,我发现我可以从我的基类的第二个实例中保留一个作业,而无需第一个实例释放作业或 TTR 超时。这是出乎意料的,因为我认为这正是作业队列应该防止的事情。这是第一个 put 和第一个保留的 beanstalkd 命令以及时间戳。最后我还做了一个 stats-job 请求:

到目前为止,一切都很好。现在我从我的基类的第二个实例做另一个储备,然后是另一个统计作业请求。请注意,时间戳在同一秒内,与我设置的 300 秒 TTR 相去甚远。另请注意,在第二个 stats-job 打印输出中,该作业有 2 个保留,其中 0 个超时和 0 个释放。

有人对我可能做错了什么有任何想法吗?我需要做些什么来告诉队列我希望作业一次只能由一名工作人员访问吗?一旦我将工作从队列中取出,我就会在 pheanstalk 实例上进行“取消设置”,我相信这会终止与 beanstalkd 的会话。这是否会导致 beanstalkd 决定工人已经死亡并自动释放工作而没有超时?我不确定 beanstalkd 有多少依赖会话状态来确定工作状态。我假设我可以不受惩罚地打开和关闭会话,并且工作 ID 是 beanstalkd 唯一关心的将工作操作联系在一起的东西,但这对我来说可能是愚蠢的......这是我第一次涉足工作队列.

谢谢!

0 投票
1 回答
1358 浏览

php - Laravel 中的 Pheanstalk,一切都以未处理的响应结束?

我已经为 Laravel 安装了 Pheanstalk 包(https://github.com/mikelbring/Pheanstalk)我现在正在按照基本示例代码尝试将作业传递到队列并再次检索它。

这是我的代码:

然而,当我运行它时,我得到一个“未处理的响应”错误,就像没有返回任何内容一样。

有没有人熟悉 Pheanstalk 并且可以提供一些帮助?

谢谢亚当。

0 投票
2 回答
1790 浏览

laravel - Beanstalkd / Pheanstalk - 根本无法正常工作!(WAMP/PHP/LARAVEL)

所以我试图让 Pheanstalk 队列在内置的 Laravel 4 中工作(我必须作曲安装 beanstalkd 库)。

现在已经完成了......我正在尝试将工作发送给我的工人。每次我这样做时都会收到此错误

我的日志中也出现此错误:

一旦我运行'php artisan queue:listen',它似乎就被循环了。

我已经下载了 beanstalkd 的控制台并将其配置为监听服务器 localhost:11300。

这给了我一个错误:未处理的响应。

我已经更改了我的 httpd.conf 并添加了 Listen 11300 并重新启动。

任何想法我哪里出错了?我看不到太多 Beanstalkd 的文档,而 Laravel 文档也没有帮助。

感谢您的任何想法!

0 投票
1 回答
572 浏览

php - beanstalkd + pheanstalk rush 条件

我有beantalkd设置。我正在使用 pheanstalk php 库来添加工作和我的工人。

添加作业正常工作,我将作业 ID 记录在我的数据库中以供以后参考。没有工作 id 被跳过 IE:他们按顺序进入那里,编号:1,2,3,4

现在工作的部分是工人。他们在做他们应该做的事情,但我让他们中的三个在运行,出于某种原因,同一个工作会运行两到三遍,而不是只运行一次。

我不确定为什么会发生这种情况我只是使用带有内存检查的while循环+我的工作代码来监视新工作。

这是该代码的开始。

这是 benstalk 控制台的输出。忽略第一行,因为那是我不使用的默认管。

在此处输入图像描述

在队列中再添加一项作业后,总列增加到 4 并且没有其他任何变化。

0 投票
1 回答
363 浏览

php - 无法在 Pheanstalk 中创建新管

我正在使用 Pheanstalk,我想在现有队列上创建一个新管,所以我编写了以下代码:

但是当我运行以下命令来检查管子时:

这是我总是得到的:

为什么不创建“api”管?我应该做些什么来查看列表中的“api”管吗?

0 投票
2 回答
3287 浏览

php - Beanstalk + Pheanstalk 延迟现有工作

我是 Beanstalk + Pheanstalk 的中级。我正在使用 Beanstalk 开发我的核心部分(后台进程)。毫无疑问,这是一款出色的工具,但我陷入了一种困境。我正在使用使用 Yii 框架的 beanstalk。

假设,我有两个工作 A(Tube - A-Jobs)和 B(Tube - B-Jobs),两者都在不同的管和工人下。B 依赖于 A。B 可能会在 A 之前由工作人员首先获取并开始处理它。在这种情况下,我需要 B 延迟几秒钟(120 秒),直到 A 执行。

据我所知,没有任何直接的方法可以拖延工作。为此,您需要删除作业 B 并延迟时间放回同一队列。如果我在这里错了,请纠正我。

现在的情况是,在这种情况下我无法获得实际的管名,因为 pheanstalk 只提供作业 ID 和作业数据。我把我的代码贴在下面,

现在,如果我有任何使用储备功能的工作,

它将为您提供如下输出,我们可以看到 beanstalk 没有提供它从中获取此作业的管道名称。

众所周知,单个工人可以在 N 个管中观看,所以如果我想推迟这项工作并想放在同一管下。我们如何找到工作的管名?

谢谢...

0 投票
1 回答
1791 浏览

php - Beanstalk/Pheanstalk 不在后台工作

我在 Ubuntu 服务器上设置 Pheanstalk 时遇到了麻烦。我对编程比较陌生,我已经完成了所有步骤: - 使用 sudo apt-get install beanstalk 安装 beanstalk - 从https://github.com/pda/pheanstalk/获取 pheanstalk

这是我的代码:

问题是运行此代码需要 4-5 分钟,并且由于某种原因 exec 命令不在后台运行。

关于我做错了什么的任何想法?提前谢谢了!

0 投票
3 回答
1160 浏览

php - Laravel 4.1 邮件队列与 beanstalkd 驱动程序 - “数据不足用于反序列化”

我正在开发我的第一个 Laravel 应用程序,在尝试将电子邮件发送队列Mail::queue用于发送电子邮件时遇到了一个奇怪的问题。

我最初使用的是sync驱动程序,一切正常,但是现在切换到beanstalkd驱动程序后,它停止发送我的电子邮件。

我的配置如下:

  • Ubuntu 13.10
  • 拉拉维尔 4.1
  • PHP 5.5.3
  • 通过安装 Beanstalkd 1.8apt-get
  • "pda/pheanstalk": "2.1.*"composer.json

我注意到的是,每次我跑步

我越来越:

我已经尝试选择redis驱动程序,但这并没有给我错误,所以很明显 pheanstalk 在我的机器上运行的方式有问题。

我已经尝试在 中更改 pheanstalk 版本composer.json,但无论我使用哪个版本,我仍然遇到同样的问题。

问题是,这个问题似乎并没有得到特别广泛的记录,而且错误消息并没有真正泄露太多......

有什么建议吗?