Symfony Beanstalkd失去了连接oracle

时间:2018-04-17 08:39:21

标签: php oracle symfony beanstalkd dbal

我在symfony(3.4)项目中遇到beanstalkd问题。

我有一个用于分析信息的symfony命令,分析器在一段时间内保持命令运行24/7。

$pheanstalk = new Pheanstalk('127.0.0.1');

while (true) {
   $pheanstalk->watch($worker);
   $queue = $pheanstalk->statsTube($worker);
   if ($queue['current-jobs-ready'] > 0) {
      analyseInformations();
   else {
      //get the most charged worker...
   }

在X分钟,5,10或15之后,命令返回异常的问题:ORA-03135 Connection Lost

dba说问题来自symfony项目而不是oracle数据库,我错过了beanstalkd连接的任何内容?

Beanstalkd与数据库有超时连接?与池连接symfony有什么关系?

在项目中,我们使用doctrine dbal向数据库发出请求。

异常消息:

  

111:29:01 ERROR [console]运行命令“analyzer”时抛出错误。消息:“执行'SELECT XXX FROM XXX:

时发生异常      

ORA-03113:通信频道上的文件结束   ID de processus:20624   会议记录:154,Numérodesérie:6639“

谢谢

1 个答案:

答案 0 :(得分:1)

PHP并不特别适合长时间运行的流程。我通过Beanstalkd运行了数千万个作业,通过其他排队系统运行了数亿个,并且通常会循环运行一些迭代次数(从5或10到几百或更多),然后退出脚本让它清理,然后重新启动。

你可以通过脚本安排重启,initupstartsupervisord或从类似的东西启动的shell脚本。

我倾向于选择shell脚本,因为我可以从脚本返回一个特定的值,由bash脚本检查,然后可以对其进行操作。对于一个值,我可以立即重新启动(按计划),或者暂停片刻,或者如果它是另一个值,则可能是计划外退出,这将暂停几秒钟并记录问题。 / p>