数据被覆盖rabbitmq excel
问题描述:
我使用rabbitmq队列从控制器获取数据,然后消费者服务处理数据并使用php-excel生成Excel表。数据被覆盖rabbitmq excel
我面临的问题是,如果只有一个用户运行,数据在Excel表中被覆盖。如果我运行多个消费者,则问题大部分已解决。
我正在使用directm作为rabbitmq类型和luiggio excel bundle for 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);
}
答
问题在于PHP excel对象被创建。
最后通过在生成一个excel表单后强制启动/重置excel对象来解决它。
答
可能的事实,你不增加你的foreach
环路内$增量,所以你总是写在同一行; value
也应该是$value
。
$value->setCellValue('A'.$incr++, $datum['that_number']);
我想你需要显示一些代码,如果你想获得反馈。 – hakre 2013-03-06 21:15:59
当然,添加示例代码在最小 – amitchhajer 2013-03-06 21:16:25
@hakre添加示例代码 – amitchhajer 2013-03-06 21:22:21