【发布时间】:2016-06-26 13:27:52
【问题描述】:
我们现在使用libreoffice --headless 有一段时间了,首先是通过 Debian,在过去的几个月里我们切换到了 CentOS。我们正在使用Symfony Process 命令将docx 转换为pdf,简化命令如下:
libreoffice --headless --convert-to pdf \
--outdir /home/conversionoutdir \
/home/conversionindir/4f00ac05aee274967b.docx
执行上述命令的 Symfony 进程非常简单:
$process = new Process($cmd);
$process->mustRun();
一切正常,但几天后转换未完成,该过程暂停,直到达到 60 秒超时。
通过在我们的DEV 服务器上进行完全相同的转换来调试它,一切都很好。还尝试转换大小文档,以查看或达到超时的页数。是否也直接在命令行上执行了命令,转换也可以并在几秒钟内完成。
异常被我们的应用程序捕获,并发送到记录器:
进程\"/usr/bin/libreoffice --headless --nologo --nofirststartwizard --norestore --convert-to pdf:writer_web_pdf_Export --outdir /home/conversionoutdir /home/conversionindir/4f00ac05aee274967b.docx\"超过了 60 秒的超时时间。
似乎 PHP 无法再跟踪该过程了。这里会发生什么?关于如何进一步调试的任何线索?
编辑:在抽象掉Symfony进程组件,将conversionoutdir权限设置为777并执行以下sn-p后,如果从PHP执行转换仍然挂起:
$output = array();
exec('libreoffice --headless --convert-to pdf \
--outdir /home/conversionoutdir \
/home/conversionindir/4f00ac05aee274967b.docx', $output);
print_r($output);
【问题讨论】:
标签: php symfony libreoffice symfony-process