Pheanstalk(beanstalk的PHP客户端)-连接如何工作?
作者:互联网
我希望对理解pheanstalk(php beantalk客户端)的使用有所帮助.我有一个PHP程序,当将表单数据发送给它时在服务器上执行.然后,PHP程序应将表单数据打包为JSON结构,并将其发送到后端服务器进程.
我不明白的是与beantalkd服务器的连接.我是否应该在每次执行PHP程序时都创建一个新的Pheanstalk()对象-在这种情况下,我要承担创建连接的费用.什么时候关闭连接(因为pheanstalk中没有close()方法)?
如果该连接是持久的,那么它将在PHP程序的所有执行之间共享吗?在这种情况下,如果并发命中会发生什么情况?谢谢你的帮助.
解决方法:
是的,您每次启动程序时都必须与Pheanstalk(或任何其他库)建立新连接,因为PHP会重新启动每个程序.虽然开销很小.
Beanstalkd流程经过优化,可以轻松处理多个连接,并且将对它们进行原子操作-您不会得到重复的作业,除非您在其中放置两个相同的作业(即使那样,它们也将具有不同的作业ID. ).
在发送第一个命令之前,Pheanstalk甚至不会向守护程序发送任何信息(包括打开连接).出于这个原因,在主动提出请求之前,您无法确定守护进程是否还活着(在我的测试中,我获得了当前管道的列表).如果您继续在运行的程序中重用实例化的类,那么它当然会继续重用它.
没有正式的close(),但是unset($pheanstalk)将执行相同的操作,运行析构函数.同样,该调用是程序的临时调用,并且如果允许的话,守护程序可以保持打开并发连接的数量,所以这不是问题-它将像程序本身一样被关闭.
简而言之,不用担心.将数据连接到Beanstalkd或从Beanstalkd发送数据的开销可能只是工作者或生产者在生成请求/响应时所做的任何工作的一小部分.
标签:beanstalkd,php 来源: https://codeday.me/bug/20191101/1985800.html