2012-12-03 28 views
3

在linux web服務器上的新PHP會話中,我想啓動一個在後臺運行的進程(特別是ghostscript)控制檯輸入模式,然後重複將新數據寫入其輸入。每次新的用戶數據通過ajax到達時,都需要寫入數據。用戶數據由PHP腳本解釋爲ghostscript的postscript命令,然後需要發送給gs。 gs輸出將會轉到一個已命名的文件。這樣做的原因是我需要速度,並希望避免從用戶的每個新輸入開始gs的開銷。 (一旦gs正在運行並等待輸入,它需要大約40ms來處理我的數據,但重新啓動gs和處理數據需要大約250ms。)儘管我可以讓gs在後臺運行並接受來自shell的輸入,但我難以從PHP腳本獲取它。我已經經歷了所有我能想到的exec,shell_exec,popen,system,coproc等變體,我似乎缺少一些基本的東西。感謝您的任何見解。如何在PHP系統上啓動後臺進程並反覆將用戶ajax輸入寫入標準輸入

+0

聽起來像你需要cron? – Raekye

+0

我看不出有什麼幫助。一切都由用戶輸入驅動;沒有什麼需要在特定的時間運行。你有什麼想法? – ernie

回答

1

如果你對服務器有適當的訪問權限,可以啓動一個套接字並讓ghostscript接受來自該套接字的輸入。

E.g.

在一個tty:
$ socket -sl 11555

另一個TTY:
$ nc 0 11555 | ghostscript

現在,無論你寫的插座,GS接受它作爲輸入。當您的AJAX請求到達服務器時,您可以執行任何需要的處理,然後將生成的postscript命令寫入PHP的套接字。

+0

學會創建一個php deamon並在deamon裏面編寫腳本來讀取一個套接字。你的ajax php腳本應該寫入該套接字。 –

相關問題