Php 正在覆盖的数据是rabbitmq excel

Php 正在覆盖的数据是rabbitmq excel,php,symfony,rabbitmq,phpexcel,amqp,Php,Symfony,Rabbitmq,Phpexcel,Amqp,我使用rabbitmq队列从控制器获取数据,然后消费者服务处理数据并使用php excel生成excel表 我面临的问题是,如果只运行一个使用者,excel表格中的数据就会被覆盖。如果我运行多个消费者,问题基本上得到了解决 我正在使用direct as rabbitmq类型和luiggio excel捆绑包来实现symfony2 有没有人有过类似的问题?欢迎提供有关可能问题的任何提示 //消费者法典的一部分 public function execute(AMQPMessage $msg)

我使用rabbitmq队列从控制器获取数据,然后消费者服务处理数据并使用php excel生成excel表

我面临的问题是,如果只运行一个使用者,excel表格中的数据就会被覆盖。如果我运行多个消费者,问题基本上得到了解决

我正在使用direct as rabbitmq类型和luiggio excel捆绑包来实现symfony2

有没有人有过类似的问题?欢迎提供有关可能问题的任何提示

//消费者法典的一部分

public function execute(AMQPMessage $msg)
    {
        $data = array();
        $data = unserialize($msg->body);

        if ($data['type'] == 'sometype') {
                $this->excel->excelObj->getProperties()->setCreator("something");
                $value = $this->excel->excelObj->setActiveSheetIndex(0);
                $value->setCellValue('A1', 'Some Number');
                $value->setCellValue('B1', 'Some Other Number');
                $incr = 2;
                foreach ($data['somedata'] as $datum) {
                  value->setCellValue('A'.$incr, $datum['that_number']);
                  value->setCellValue('B'.$incr, $datum['that_number']);
                }
        } else if ($data['type'] == 'sometype2') {
                $this->excel->excelObj->getProperties()->setCreator("something");
                $value = $this->excel->excelObj->setActiveSheetIndex(0);
                $value->setCellValue('A1', 'Some Number2');
                $incr = 2;
                foreach ($data['somedata'] as $datum) {
                  value->setCellValue('A'.$incr, $datum['that_number']);
                }
        }

        $this->excel->excelObj->getActiveSheet()->setTitle('Simple');
        $this->excel->excelObj->setActiveSheetIndex(0);
        $tempName = $data['type'] .microtime(). '.xls';
        $this->excel->getStreamWriter()->write('/tmp/'.$tempName);
    }

可能是因为在
foreach
循环中没有增加$incr,所以总是写入同一行;在这些循环中,
value
也应该是
$value

$value->setCellValue('A'.$incr++, $datum['that_number']);

问题在于正在创建的PHP excel对象


最后,在生成一张excel工作表后,通过强制启动/重置excel对象来解决此问题。

我认为如果您想获得反馈,需要显示一些代码。当然,请在min@hakre添加了示例代码只是一个猜测,是否需要在每次调用execute()时重新初始化$this->excel->excelObj?因此,在看到您的代码后,我不清楚“数据被覆盖”是什么意思。档案?文件内部,例如某些特定单元格?如果是,哪一个?如果不进行文件锁定,您可能希望这样做是为了确保不会遇到任何竞争条件。