2010-05-18 51 views
2

我想開始將我的(稍微有限的)PHP體驗與我的(更好的)Java體驗結合起來,在一個需要允許將Java源文件上傳到服務器的項目中,服務器隨後在其上執行Javac編譯它。PHP網站調度Java執行?

然後,在設定的時間(例如在上傳時指定),我需要在服務器上運行一次,這將生成一些數據庫信息以顯示PHP站點。爲了描述我目前的編程能力 - 我製作了許多桌面Java程序,並對'純'Java有信心,但迄今爲止只進行了幾個PHP項目(包括使用CodeIgniter框架)。

我將PHP作爲前端的動機是因爲我知道它非常快速,輕量級,並且我將能夠很容易地顯示出我需要的結果(簡單的數據庫讀取)。理想情況下,所使用的技術應該能夠在本地主機上開發(例如WAMP,Tomcat等)。

有什麼建議可以給我應該考慮用什麼技術來彌補這個差距,以及什麼資源可以幫助使用該技術?我已經看了一些,但一直在努力尋找幫助實現我所需要的文檔。

+0

這是一個專用的自我管理服務器,還是共享主機? – tylermac 2010-05-18 13:02:08

+0

我必須說這比回答更難回答。我不確定我能夠獲得哪些內容,但有可能在專用服務器上運行,但也有可能在共享硬件上的虛擬化服務器上​​運行。如果可能的話,任何建議/鏈接,這兩個可能性會很大 – obfuscation 2010-05-18 13:14:45

+0

我強烈建議爲此專用或虛擬環境。你有root權限的地方。在共享環境中執行此操作可能會非常棘手。 – Josh 2010-05-18 15:14:29

回答

1

有很多方法可以解決這個問題,但是你沒有提供足夠的細節來縮小到只有一種方法,所以我會提出一些......編譯java源代碼可能需要很長時間才能完成正常的Web請求,所以我的建議是讓接受Java源文件的PHP腳本運行後臺命令,後臺命令編譯源文件並將其進度記錄到數據庫或日誌文件。這樣,您可以將用戶重定向到一個頁面,該頁面顯示「請稍候,正在編譯您的源代碼」並使用Ajax每隔幾秒檢查一次以查看更新的進度。如果這是您想要去的路線,請查看PHP exec command

對於PHP來說,爲每個上傳的文件簡單地在數據庫中創建一個ID並呼叫move_uploaded_file將源文件移動到「傳入」目錄可能會更加有益。從那裏開始,經常運行的cron作業可以掃描傳入目錄或數據庫中的源文件,編譯它們,並在完成時更新數據庫。

無論是哪種情況,編譯的程序都可以用任何語言編寫,甚至可以用Java編寫,如果您願意的話。

+0

關於CRON工作,那裏有什麼樣的開銷?大多數上傳可能會在最後期限之前完成,因爲這是一個向提交系統發展的過程,所以如果僅僅需要在預定義的最後期限之前運行幾次,CRON工作往往會非常低效。 CRON有沒有適合這種系統的靈活性? – obfuscation 2010-05-18 15:09:02

+0

如果應該快速處理上傳,我建議使用PHP的'exec'命令來啓動後臺作業。 – Josh 2010-05-18 15:13:24

+0

我必須保證的主要關注點是,上傳過程中被賦予了「優先」的意義。在這種情況下,你是否會反對使用exec,因爲我認爲它會創建額外的「競爭」線程?理想情況下,最好創建某種形式的等待處理的上傳「隊列」,並以給定速率處理這些上傳。在這種情況下你有什麼建議嗎?(在Java中,我可能只是創建一個單獨的線程,其中對象以增量進行處理) – obfuscation 2010-05-18 15:42:40