[英]How to run tools in php server at same time
我正在雲上運行的xampp(win 7)服務器上運行Web門戶。
此表格將在C#中調用2個單獨的工具,在R中調用另一個
<form action="tools/automatic.php" method="post" target="_blank" enctype="multipart/form-data">
automatic.php
presentation.bat
START "" "C:\Tools\1\Presentation.exe" 2019 01 25 00 templatename users\thisfolder "inputfile.xlsx"
exit
analytics.bat
R CMD BATCH --no-save --no-restore "--args 2019 01 25 00 templatename users\thisfolder" C:\Tools\2\analytics.R analytics.out &
然后,它像這樣調用那兩個.bat
運行R
$Rbatpath = 'C:\NPOSL\\' .$userDirectory.'\analytics.bat';
$Rcomand= exec($Rbatpath);
pclose(popen("start " . $Rcomand, "r"));
運行C
$batpath = 'C:\NPOSL\\'.$userDirectorytunnel.'\presentation.bat';
$Ccomand= exec($batpath);
pclose(popen("start " . $Ccomand, "r"));
echo "<script type='text/javascript'>window.close();</script>";
這是沒有問題的,並且我知道這不是處理它的最佳方法。
我需要它同時運行兩個工具
我已經搜索了多個小時的stackoverflow,並嘗試了每種可能的組合
無論我嘗試什么,即使它沒有問題,也總是等待一切完成
您能幫我同時運行所有內容嗎?
理想情況下,我希望工具在關閉窗口之前完成,但這是多余的,並且我真的不在乎它是否可行。
編輯
我將其更改為:
$Ccomand = exec("the content which was inside .bat" . " > /dev/null &")
並且它仍然等待執行完成。
可以將兩個批處理文件的內容合並為一個嗎?
問題在於exec()
異步運行進程。
如果使用pclose(popen("start ".$Rbatpath,"r"))
或$Rcommand = "start ".$Rbatpath; pclose(popen($Rbatpath,"r"))
規避了該怎么$Rcommand = "start ".$Rbatpath; pclose(popen($Rbatpath,"r"))
$Rcommand = "start ".$Rbatpath; pclose(popen($Rbatpath,"r"))
嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.