在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輸入寫入標準輸入
3
A
回答
1
如果你對服務器有適當的訪問權限,可以啓動一個套接字並讓ghostscript接受來自該套接字的輸入。
E.g.
在一個tty:
$ socket -sl 11555
另一個TTY:
$ nc 0 11555 | ghostscript
現在,無論你寫的插座,GS接受它作爲輸入。當您的AJAX請求到達服務器時,您可以執行任何需要的處理,然後將生成的postscript命令寫入PHP的套接字。
+0
學會創建一個php deamon並在deamon裏面編寫腳本來讀取一個套接字。你的ajax php腳本應該寫入該套接字。 –
相關問題
- 1. 後臺進程聽標準輸入
- 2. 將輸入重複送入進程標準輸入
- 3. 的boost ::進程寫入標準輸入
- 4. 寫入進程的標準輸入
- 5. 寫入標準輸出並從標準輸入讀取C
- 6. execv *並寫入標準輸入
- 7. QProcess.startDetached()並寫入其標準輸入
- 8. 發佈後寫入NSTasks標準輸入
- 9. 如何將文件作爲標準輸入腳本編寫到應用程序中,然後使用真實標準輸入進行用戶輸入?
- 10. 如何寫入Elixir的標準輸入?
- 11. 將標準輸入寫入文件
- 12. 寫入標準輸入和讀取標準輸出的子進程python 3.4
- 13. 從控制檯讀取用戶輸入並將其寫入JSON
- 14. 標準控制檯輸入
- 15. 如何寫入另一個應用程序的標準輸入?
- 16. 標準輸入Java輸入
- 17. 如何解析來自標準輸入流的用戶輸入?
- 18. 如何閱讀Dart中的控制檯輸入/標準輸入?
- 19. SuSE - 如何重新啓動linux後臺進程,這是由用戶啓動鍵盤輸入,重新啓動後
- 20. 重定向標準輸入,同時等待後臺進程
- 21. 如何處理標準輸入到標準輸出在PHP?
- 22. 將Python標準輸入流更改爲Windows控制檯輸入
- 23. 入門標準輸入後,用戶輸入已被重定向,在Bourne腳本
- 24. svn請求密碼時寫入標準輸入 - c#進程
- 25. C++寫的標準輸入數據,並從標準輸出
- 26. Maven寫入標準輸出
- 27. 寫入標準輸出
- 28. 將子進程的標準輸出重定向到父進程標準輸入
- 29. 注入輸入連接到標準輸入(交互控制檯)
- 30. 管道是否寫入標準輸入?
聽起來像你需要cron? – Raekye
我看不出有什麼幫助。一切都由用戶輸入驅動;沒有什麼需要在特定的時間運行。你有什麼想法? – ernie