Php
在 debian 伺服器上的 php 中執行 unoconv 的最佳方法是什麼?
我有一個 php 腳本,我需要在其中將 doc 文件轉換為 html 文件,以便在網頁中顯示它們。
我正在使用 php 命令進行轉換:
exec ( $Command, $Output, $ReturnValue ) ;
在哪裡
$Command = "/usr/bin/timeout -s 9 $TimeOut /usr/bin/unoconv -f html -o " . escapeshellarg($Dir) . " " . escapeshellarg($File) ;
顯然一切執行良好,但有時程序並沒有結束,我仍然有數百個程序
soffice.bin
,這些程序浪費記憶體並肯定會使伺服器崩潰。unoconv``oosplash
我錯過了什麼嗎?
有沒有更好的呼叫方式
unoconv
?我應該將
unoconv
伺服器作為系統服務執行嗎?我正在使用:LibreOffice 3.5、Unoconv 0.5、apache 2.2.22-13+deb7u4
我推薦以下內容:
- 使用最新版本的 unoconv(至少發佈時 v0.7,或者今天來自 GitHub 的 master 分支)
- 使用 LibreOffice 的最新穩定版本(最近的版本使用更少的記憶體,通常更快且崩潰更少)
- 使用本機 LibreOffice python 二進製文件執行 unoconv,例如。/opt/libreoffice4.4/program/python /usr/bin/unoconv -f pdf file.doc
- 在 unoconv 腳本 shebang 中硬編碼 python 路徑,所以放在第一行 #!/opt/libreoffice4.4/program/python 而不是 #!/usr/bin/env python。(Apache/PHP 通常不設置 PATH,所以 unoconv 失敗)
- 確保執行 unoconv 的使用者對其 HOME 目錄具有寫入權限
如果您執行上述操作,一切都會正常進行。如果 LibreOffice 仍然崩潰,您應該在上游項目中解決這個問題。還要注意 LibreOffice 不能同時處理多個連接/客戶端,因此理想情況下,您的 PHP 腳本應該正確鎖定和/或排隊請求。(查看flock系統實用程序)
如果您仍有任何問題,請報告至:http: //github.com/dagwieers/unoconv/issues