Я использую веб-портал на сервере xampp (win 7), работающем в облаке.
- Пользователь загружает файл .xlsx, который сохраняется в папке
- Пользователь выбираетдата и опции, которые будут использоваться позже
- Пользователь нажимает кнопку отправки, которая вызывает форму automatic.php
Эта форма вызовет 2 отдельных инструмента 1 в C #, другой в 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 &
Затем он вызывает эти 2 .bats какэто
запустить 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 секунд закрываются, окно
Мне нужно, чтобы оба инструмента запускались одновременно
Я искал стекопоток в течение многих часови попробовал каждую возможную комбинацию
- Написание «start» в php, но не в .bat (и) наоборот,
- Я пытался даже не создавать.bat и запускайте инструменты напрямую из exec ()
- add / B, чтобы попытаться запустить в фоновом режиме
Независимо от того, что я пытаюсь, хотя он работает без проблем, всегда ждетчтобы все закончилось
Не могли бы вы помочь мне запустить все одновременно?
В идеале я хотел бы, чтобы инструменты заканчивались до закрытия окна, но это излишне иМне все равно, если это невозможно.
РЕДАКТИРОВАТЬ
Я изменил его на:
$Ccomand = exec("the content which was inside .bat" . " > /dev/null &")
и этовсе еще ожидает завершения выполнения.