Php

在 debian 伺服器上的 php 中執行 unoconv 的最佳方法是什麼?

  • July 17, 2017

我有一個 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

引用自:https://serverfault.com/questions/694689