Я пытаюсь экспортировать PDF и XML-файл для каждого счета, соответствующего моим критериям.Пока все работает отлично, за исключением одного действительно странного поведения.
В моей функции выполнения моего Контроллера у меня есть цикл foreach, повторяющийся по моему результату из БД, например,
foreach($result as $row) {
$this->writeXml($row['document_increment']);
$this->writePdf($row['document_id'], $row['document_increment']);
}
, который вызывает этидве функции
public function writeXml($document_increment){
$content = $this->buildXml();
$myfile = fopen('/var/www/magento2/var/folder/_' . $document_increment. '.xml', "w");
fwrite($myfile, $content);
fclose($myfile);
}
public function writePdf($document_id, $document_increment){
$invoice = $this->invoiceRepository->get($document_id);
$pdf = $this->invoicePdfGeneratorService->execute($invoice);
$this->fileFactory->create(
'_' . $document_increment. '.pdf',
$pdf->render(),
\Magento\Framework\App\Filesystem\DirectoryList::VAR_ELO ,
'application/pdf'
);
}
Я полностью осознаю, что часть этого кода вообще не является лучшей практикой Magento 2, но это скорее "мы можем это сделать вообще?"ситуация.
Теперь я настроил ajax-запрос для вызова моего контроллера вручную, чтобы протестировать его из бэкэнда.Когда я это делаю, Magento генерирует два файла PDF с инвойсом и два файла XML с инвойсом, а затем останавливается без каких-либо ошибок, предупреждений или чего-либо подобного.Я сузил его до функции writePdf()
.Удаление этого приводит к 5 (LIMIT
в Query) XML-файлам, как и предполагалось.
Я уже исключил обычное
- время выполнения в php.ini
- неверный результат / ошибка MySQL в запросе (так как он отлично работает с XML)
и проверил все журналы, но нет ни исключения / ошибки / чего-либо, ни какой-либо конфигурации, которую я считал ответственной.
Я думаю, что это действительно странно, так как он прерывается после второго цикла.У кого-нибудь есть идеи, что может вызвать это?Я очень благодарен за каждую подсказку.
EDIT
Я изменил триггерное действие с вызова ajax на задание cron.Все становится еще страннее: теперь все работает, cron сохраняет все файлы PDF и XML.Может кто-нибудь объяснить мне / кто-то есть идеи, почему?