Ich habe Probleme mit einer Batch-Datei und Ausführen von PHP.Batch-Datei über PHP ausgeführt läuft alle Befehle als Hintergrund Prozesse
Wir verfügen über einige Knotenserver und Avaya CMS, die auf einem Server mit eingeschränktem Zugriff ausgeführt werden.
Die Server müssen täglich neu gestartet werden, da sie manchmal abstürzen, also habe ich eine Batch-Datei erstellt, um alle cmd-Fenster, Knoten und Avaya herunterzufahren.
Dann öffnet es alle Knoten-Server und Avaya, startet ein AHK-Skript, das sich in Avaya anmeldet, und startet schließlich ein paar Avaya-Berichte.
Das alles läuft gut, wenn ich auf die Batch-Datei doppelklicke, oder wenn ich es über Taskplaner ausführe, aber jetzt möchten wir in der Lage sein, es über einen Klick auf eine PHP-Seite auszuführen.
Hier renne ich in Schwierigkeiten.
Von was ich sehen kann, wenn ich auf die Schaltfläche klicke, läuft die Batchdatei, schließt alle Knotenserver und das ist es, oder so dachte ich, zuerst.
Durch einige Graben habe ich festgestellt, dass es in der Tat die Ausführung der gesamten Batch-Datei, aber es läuft alle cmd Windows und Avaya als Hintergrundprozesse, und ich denke, das ist, wo mein Problem liegt.
AFAIK beim Ausführen von Batch-Dateien von PHP gibt es keine Möglichkeit, es öffnen cmd, aber ich dachte, dass die Batch-Datei selbst würde die cmd Windows und Avaya im Vordergrund laufen.
Gibt es einen Weg, dies zu erreichen?
Code unten, wenn es benötigt wird.
PHP
$test = escapeshellcmd('C:\Windows\System32\cmd.exe /k
"C:\wamp\www\batch_files\R - Wallboards Script"');
system($test);
Batch File
title Launching Servers...
echo Kill Avaya
@echo off
taskkill /f /im "acsCNTRL.exe" /T
taskkill /f /im "acsApp.exe" /T
taskkill /f /im "wscript.exe" /T
taskkill /f /im "ACScript.exe" /T
taskkill /f /im "acsSRV.exe" /T
taskkill /f /im "acsRep.exe" /T
@echo off
call getCmdPID
set "current_pid=%errorlevel%"
for /f "skip=3 tokens=2 delims= " %%a in ('tasklist /fi "imagename eq cmd.exe"') do (
if "%%a" neq "%current_pid%" (
TASKKILL /PID %%a /f /T >nul 2>nul
)
)
timeout 5
echo Kill Node
for /f "skip=3 tokens=2 delims= " %%a in ('tasklist /fi "imagename eq node.exe"') do (
if "%%a" neq "%current_pid%" (
TASKKILL /PID %%a /f /T >nul 2>nul
)
)
@REM DEFINE PATH TO BATCH FILES
SET batch_file_Path="C:\wamp\batch_files"
@REM Change directory to batch files
cd %batch_file_Path%
@REM #######################
@REM # LAUNCH NODE SERVERS #
@REM #######################
echo Launch Node Servers
@REM RADAR
start cmd /k launch_server.bat C:\wamp\www\radar
@REM RADAR_SCHEDULE
start cmd /k launch_server.bat C:\wamp\www\radar_schedule
@REM ######################################################################
@REM # LAUNCH NODE SERVERS WITH "NODE FILENAME.JS" INSTEAD OF "NPM START" #
@REM ######################################################################
@REM LOGIN_DATA_SERVER
start cmd /k launch_server_node.bat login_data_server.js
@REM WALLBOARD_SERVER
start cmd /k launch_server_node.bat wallboard_server.js
@REM SERVER
start cmd /k launch_server_node.bat server.js
@REM ########################
@REM # LAUNCH AVAYA REPORTS #
@REM ########################
echo Launch Avaya
@REM Launch CMS Supervisor and wait 10 seconds
"C:\Program Files (x86)\Avaya\CMS Supervisor R16\acsRun.exe" /L:enu
"C:\Program Files\AutoHotkey\AutoHotkey.exe" "\\Path\To\File\cmsLogin.ahk"
timeout 10
echo Launch Avaya Reports
@REM Launch Reports
"\\Path\To\File\Agent Status.acsup"
"\\Path\To\File\RE - Wallboard.acsup"
"\\Path\To\File\RD - Wallboard.acsup"
"\\Path\To\File\WT - All Agent LoginLogout.acsup"
"\\Path\To\File\WT - Agent Realtime.acsup"
timeout 2
exit
Vielen Dank für Ihre Zeit :)
Barry
Versuchen Sie, geplante Aufgabe zu erstellen, die sofort feuert, die PH übersteuert P Standardverhalten von laufendem Code im Hintergrund. [Windows Aufgabe mit PHP erstellen] (https://codesnob.wordpress.com/2009/05/30/creating-windows-task-with-php/) – dafyk