gpt4 book ai didi

php - Pheanstalk(beantalk 的 PHP 客户端)——连接是如何工作的?

转载 作者:可可西里 更新时间:2023-11-01 01:06:44 26 4
gpt4 key购买 nike

我需要一些帮助来理解 pheanstalk(php beanstalk 客户端)的使用。我有一个 PHP 程序,当表单数据发送给它时,它在服务器上执行。然后 PHP 程序应将表单数据打包为 JSON 结构并将其发送到后端服务器进程。

我不明白的是与 beanstalkd 服务器的连接。我是否应该在每次 PHP 程序执行时创建一个新的 Pheanstalk() 对象 - 在这种情况下,我是否会产生创建连接的成本。连接何时关闭(因为 pheanstalk 中没有 close() 方法)?

如果连接是持久的,它是否在 PHP 程序的所有执行之间共享,在这种情况下,在并发命中的情况下会发生什么?感谢您的帮助。

最佳答案

是的,每次启动该程序时,您都必须创建一个与 Pheanstalk(或任何其他库)的新连接,因为 PHP 会重新启动每个连接。虽然开销很小。

Beanstalkd 进程经过优化,可以轻松处理大量连接,并将以原子方式对它们进行操作 - 你不会得到重复的工作,除非你将两个相同的工作放在那里(即使那样,它们也会有不同的作业 ID)。

在发送第一个命令之前,Pheanstalk 甚至不会向守护进程发送任何信息(包括打开连接)。正是出于这个原因,在您主动发出请求之前,您无法判断守护进程是否还活着(在我的测试中,我得到了当前管的列表)。如果您在运行的程序中继续重复使用实例化的类,那么它当然会继续重复使用它。

没有正式的 close(),但是 unset($pheanstalk) 会做同样的事情,运行析构函数。同样,调用是一个非常短暂的程序,如果允许的话,守护进程可以保持如此多的并发连接打开,这不是问题 - 它将像程序本身一样关闭。

总之,别担心。将数据连接到 Beanstalkd 或将数据发送到 Beanstalkd 或从 Beanstalkd 发送出去的开销可能只是工作人员或生产者在生成请求/响应时所做的任何工作的一小部分。

关于php - Pheanstalk(beantalk 的 PHP 客户端)——连接是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9151315/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com