我在本地創建了一個小型php腳本,它在命令行中運行java應用程序。這個Java應用程序連續運行,永遠不會結束。運行時,它輸出命令行文本。這裏是代碼:運行時打印出shell_exec
<?php
set_time_limit(0);
$command = "java -Xms124M -Xmx124M -jar myapp.jar";
$end = " 2>&1";
$in = $command . $end;
$out = exec($in);
var_dump($out);
?>
我的問題是,輸出永遠不會打印,因爲應用程序永遠不會停止運行。有沒有辦法讓PHP打印出應用程序正在運行時返回的每一行? 希望我在這裏有意義(讓我知道如果我不是)。
爲什麼你會產生一個預計不會結束的進程?基於服務或客戶端 - 服務器架構不會更好嗎? – Kenaniah 2012-01-02 05:00:13
'java'標記不相關。用任何語言編寫的長時間運行的程序都會遇到同樣的問題。 – 2012-01-02 05:03:24
好吧,如果進程永遠不會結束,那麼您需要在不同的線程中打開它,但afaik php沒有內置多線程功能。由於爲每個請求打開一個JVM本身就是過度殺毒,所以我建議你使用某種形式的進程間通信(IPC),通過執行如下操作來啓動程序的新實例:http://stackoverflow.com/questions/661546 /發送郵件從php到Java。增量更新站點應該通過JavaScript和其他請求來完成,而不是等待一個請求。編輯:好吧,我沒有讀「本地」的一部分,傻我 – PeterT 2012-01-02 05:03:38