Мы используем libreoffice --headless
какое-то время, сначала через Debian, и за последние месяцы мы перешли на CentOS. Мы используем команду Symfony Process для преобразования docx
в pdf
, упрощенная команда выглядит следующим образом:Libreoffice headless Результат процесса не возвращается, но ждет тайм-аута
libreoffice --headless --convert-to pdf \
--outdir /home/conversionoutdir \
/home/conversionindir/4f00ac05aee274967b.docx
Процесс Symfony, который выполняет вышеупомянутую команду довольно прямо вперед:
$process = new Process($cmd);
$process->mustRun();
Все работает хорошо, но с тех пор, как через пару дней преобразование больше не завершено, и процесс выйдет до тех пор, пока не будет достигнут 60-секундный тайм-аут.
Отлаживали это, делая то же самое преобразование на нашем сервере DEV
, где все в порядке. Также попытался преобразовать малые и большие документы, увидеть или количество страниц для достижения таймаута. Также выполнил команду в командной строке напрямую, где конверсия также в порядке и заканчивается в течение нескольких секунд.
Исключение улавливается нашим приложением, и отправляется к регистратору:
Процесс \ "/ USR/бен/LibreOffice --headless --nologo --nofirststartwizard --norestore --convert -to pdf: writer_web_pdf_Export --outdir/home/conversionoutdir /home/conversionindir/4f00ac05aee274967b.docx \ "превысил таймаут 60 секунд.
Похоже, что PHP больше не может отслеживать процесс. Что здесь может быть? Какие-нибудь подсказки о том, как отлаживать это дальше?
Edit: после абстрагируясь от компонента процесса Symfony, устанавливая conversionoutdir
разрешения на 777 и выполнив следующий фрагмент кода, преобразование по-прежнему сохраняет подвешивания, если выполняется из PHP:
$output = array();
exec('libreoffice --headless --convert-to pdf \
--outdir /home/conversionoutdir \
/home/conversionindir/4f00ac05aee274967b.docx', $output);
print_r($output);