バッチファイルに問題があり、PHPで実行しています。PHP経由で実行されるバッチファイルは、すべてのコマンドをバックグラウンドプロセスとして実行します。
制限付きアクセスが許可されているサーバー上で実行されるノードサーバーとAvaya CMSがあります。
サーバがクラッシュすることがあるため、サーバを毎日再起動する必要があるため、すべてのcmdウィンドウ、ノード、およびavayaをシャットダウンするバッチファイルを作成しました。
次に、すべてのノードサーバーとavayaを開き、avayaにログインするAHKスクリプトを起動し、最後にいくつかのavayaレポートを起動します。
バッチファイルをダブルクリックしたとき、またはタスクスケジューラで実行したときに、これはすべて正常に動作しますが、PHPページをクリックしてボタンをクリックして実行できるようになりました。
これは私が問題を抱えているところです。
ボタンをクリックすると、バッチファイルが実行され、すべてのノードサーバーがクローズされているので、最初は思っていました。
実際にはバッチファイル全体が実行されていますが、すべてのcmdウィンドウとavayaがバックグラウンドプロセスとして実行されていることがわかりました。
AFAIK PHPからバッチファイルを実行する場合、cmdを開く方法がありませんが、バッチファイル自体がcmdウィンドウとavayaをフォアグラウンドで実行すると考えました。
これを達成する方法はありますか?
必要に応じて以下のコードを入力してください。
PHP
$test = escapeshellcmd('C:\Windows\System32\cmd.exe /k
"C:\wamp\www\batch_files\R - Wallboards Script"');
system($test);
バッチファイル
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
お時間をありがとう:)
バリー
PHを上書きする、即座に発生するスケジュールされたタスクを作成しようとする実行中のコードのバックグラウンドでのデフォルトの動作。 [PHPでWindowsタスクを作成する](https://codesnob.wordpress.com/2009/05/30/creating-windows-task-with-php/) – dafyk