2017-10-04 62 views
0

我正在使用ghost腳本將文件轉換爲以下版本。ghost腳本是否需要一些時間才能在給定位置複製轉換後的文件

shell_exec('gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dNOPAUSE -dQUIET -dBATCH -sOutputFile=' . $strTempConvertedPdfFilePath . ' ' . $strTempFilePath); 

(我假設上面的命令是同步的,下一行只有在完成幽靈腳本執行之後執行。)

只是afert這一點,如果轉換後的文件存在於路徑我使用$ strTempConvertedPdfFilePath位置。

它有時會工作並返回true,有時候不會,並且只需刷新頁面就可以爲相同的文件和路徑返回false。

我懷疑幽靈腳本需要一些時間來複制轉換後的文件在給定的位置,並由此file_exists間歇地返回true/false。

請讓我知道是否有人遇到過類似問題並有解決辦法。

回答

0

Ghostscript(或更具體的pdfwrite設備)不需要任何時間'複製'該文件,因爲它不復制該文件。

打開最終目標文件(-sOutputFile),在卸載設備之前寫入內容並關閉文件,並退出Ghostscript並將控制權返回給shell。

我不是shell編程或PHP的專家,但我會傾向於認爲shell_exec在子進程退出之前將控制權返回給程序。或者,操作系統需要一些時間來檢測目標文件的存在或有效性。顯而易見的解決方案是在測試文件之前堅持一小段延遲。

+0

謝謝Ken澄清文件寫入過程。我也在考慮添加延遲。但不知道多少是足夠的,因爲我認爲它是輸出文件寫入時間,它可以根據文件大小而變化。現在,如果你的情況是這樣,那麼總是需要幾乎相同的時間。 – RajeshK

相關問題