簡體   English   中英

如何在php服務器中同時運行工具

[英]How to run tools in php server at same time

我正在雲上運行的xampp(win 7)服務器上運行Web門戶。

  • 用戶上載一個.xlsx文件,該文件已保存到文件夾
  • 用戶選擇一個日期和選項,稍后將使用
  • 用戶單擊提交按鈕,該按鈕將調用表單Automatic.php
  • 此表格將在C#中調用2個單獨的工具,在R中調用另一個

     <form action="tools/automatic.php" method="post" target="_blank" enctype="multipart/form-data"> 

automatic.php

  • 使用用戶提交的信息來構建2個.bat文件,格式如下:

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>";

這是沒有問題的,並且我知道這不是處理它的最佳方法。

  • 它調用R工具並運行30秒鍾。
  • 在那30秒之后調用C#工具並運行20秒
  • 在那20秒關閉窗口之后

我需要它同時運行兩個工具

我已經搜索了多個小時的stackoverflow,並嘗試了每種可能的組合

  • 用php編寫“開始”,而不用.bat(和),反之亦然,
  • 我試圖甚至不創建.bat並直接從exec()執行工具
  • 添加/ B嘗試在后台運行

無論我嘗試什么,即使它沒有問題,也總是等待一切完成

您能幫我同時運行所有內容嗎?

理想情況下,我希望工具在關閉窗口之前完成,但這是多余的,並且我真的不在乎它是否可行。


編輯

我將其更改為:

$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM