我正在Web服務器上運行Java程序並將它傳遞給來自PHP變量的參數,並且我遇到了一些令人困惑的問題。我使用的Java程序似乎表現出不同的行爲,當我從shell運行它並使用PHP中的shell_exec()運行它時。Java程序的運行方式與shell不同,並且在PHP中使用exec()
如果我使用像膩子一個工具從命令行執行該程序,像這樣:
ksh runexample.ksh ClassName methodName
它正常運行,這意味着程序發送請求,約20秒後接收從網關服務器它的響應連接到。然後,我可以通過在外部數據庫中查看結果記錄來看到通信成功。
現在,當我通過使用PHP腳本執行這個程序時,出現了這個問題。
shell_exec('path/ssh [email protected] "cd /path/path/examples/ ksh runexample.ksh ClassName methodName;')
如果我加載此PHP腳本,後續代碼var_dump()的輸出,該程序似乎加載;但它給了我一個來自Java程序的簡短通用消息,如「在連接模式下運行的程序等等」,並且不輸出通常的響應。 PHP腳本幾乎立即使用此輸出加載頁面。此外,外部數據庫中不會創建任何記錄。
我在腳本中有set_time_limit(0),但是這個問題可能是由於shell_exec()在Java程序中的請求/響應完成之前以某種方式超時了嗎?
感謝您的任何見解/類似的經驗,我感謝幫助!