Thanks for the response, but this did not work for me. I found that many solution ideas in the internet, but nothing worked for me.
Now i finally found the solution! The keyword is popen! This works nice:
$handle = popen ['start /B C:\Data\restart_TS3.bat > C:\Daten\restart_TS3.log 2>&1', 'r'];
pclose [$handle];
header["Location:ts3_status.php"];
This do following: popen opens a background process that starts the batch file, output goes to the log file. Then you need to close it with pclose. [the batch is still running in background] After that, it opens another website, in my case its a "see current status" website.
If you dont want a log, you can also output [like MarkB told before] with >nul. This would look like that:
$handle = popen ['start /B C:\Data\restart_TS3.bat >nul 2>&1', 'r'];
And be careful with empty spaces in the path! I dont know why, but this will not work:'start /B "C:\Data Folder\restart_TS3.bat" >nul 2>&1' In that cases you need " in the folder like that:
$handle = popen ['start /B C:\"Data Folder"\restart_TS3.bat >nul 2>&1', 'r'];
This works fine with empty space in Folder names.
I try to execute a .bat file [Windows Server with xampp] from php in Background. After i klick on the button, it also should go to another Website.
But when i click on the button, the browser is waiting for the script to finish. Mostly this is ending in a timeout.
my php code:
if [isset[$_POST['test']]]
{
exec['C:\Daten\test.bat'];
header["Location:test_status.php"];
}
how can i tell the php exec, to dont wait?
I tried also following, but does not work:
exec['C:\Daten\test.bat' . '> /dev/null &'];
- Table of contents
- Execute .bat file from php in background
- Run .cmd or a .bat file from php?
- Create Batch File [.BAT] to Run EXE Program
Execute .bat file from php in background
if [isset[$_POST['test']]] { exec['C:\Daten\test.bat']; header["Location:test_status.php"]; }
exec['C:\Daten\test.bat' . '> /dev/null &'];
$handle = popen ['start /B C:\Data\restart_TS3.bat > C:\Daten\restart_TS3.log 2>&1', 'r']; pclose [$handle]; header["Location:ts3_status.php"];
$handle = popen ['start /B C:\Data\restart_TS3.bat >nul 2>&1', 'r'];
$handle = popen ['start /B C:\"Data Folder"\restart_TS3.bat >nul 2>&1', 'r'];
exec['start c:\daten\test.bat'];
exec["start cmd /c test.bat", $output]; var_dump[$output];
Run .cmd or a .bat file from php?
Method1 $shell = new COM["WScript.Shell"] or die["Requires Windows Scripting Host"]; $exePath = ["C:\TestFolder\Batch.bat"];//also tried Command.cmd $shell->exec[$exePath]; Method2 $result = `C:\TestFolder\Batch.bat`;//also tried Command.cmd Method3 exec["C:\TestFolder\Batch.bat", &$Result];//also tried Command.cmd Method4 system["cmd /c C:\TestFolder\Batch.bat"];//also tried Command.cmd
How to run a php script in background
Syntax : {command} & Example: ls -l & exec php index.php > /dev/null 2>&1 & echo $
ps -l [list all process] ps -ef [all full details of process]
Syntax: nohup exec arg1 arg2 > /dev/null & Example: nohup exec php process.php hello world > /dev/null &
$proc=new BackgroundProcess['exec php /process.php hello world'];
$proc=new BackgroundProcess[]; $proc->setCmd['exec php /process.php hello world']; $proc->start[];
$proc=new BackgroundProcess[]; $proc->setCmd['exec php /process.php hello world']->start[];
$process=new BackgroundProcess["curl -s -o /log/log_storewav.log -d param_key="];
$proc=new BackgroundProcess[]; print_r[$proc->showAllPocess[]];
$proc=new BackgroundProcess[]; $proc->setProcessId[101]->stop[]; //set the process id.
can't execute .bat file from php
c:\scripts\labor\scheduled\cscript.exe c:\scripts\labor\scheduled\labor.vbs /store_list:"store1;store2" /start_date:"2013-01-21" /end_date:"2013-01-24"
$cmd .= 'c:\scripts\labor\scheduled\cscript.exe c:\scripts\labor\scheduled\labor.vbs /store_list:"' . urldecode[$store_list] . '" /start_date:"' . urldecode[$start_date] . '" /end_date:"' . urldecode[$end_date] . '"'; $fname = 'c:\scripts\labor\scheduled\repost_labor.bat'; $fp = fopen[$fname, 'w']; fwrite[$fp, "@echo off\n" . $cmd]; fclose[$fp]; exec[$fname, $out, $retval]; print_r[$out]; echo[$retval];
Array [ [0] => [1] => C:\inetpub\wwwroot\functions>c:\scripts\labor\scheduled\cscript.exe c:\scripts\labor\scheduled\labor.vbs /store_list:"store1;store2" /start_date:"2013-01-21" /end_date:"2013-01-24" ]
@echo off echo Running cmd /c cscript.exe c:\scripts\labor\scheduled\labor.vbs /store_list:"store1;store2" /start_date:"2013-02-03" /end_date:"2013-02-05"
cmd /c cscript.exe c:\scripts\labor\scheduled\labor.vbs /store_list:"store1;store2" /start_date:"2013-02-03" /end_date:"2013-02-05"
cmd /c schtasks /delete /tn "repost_labor" /u /p /f /s
Exec
Returned with status 0 and output: Array [ [0] => cmb ]
Create Batch File [.BAT] to Run EXE Program
start "C:\Path\Program.exe"
start "MyProgram" "C:\Path\Program.exe" /param1 /param2
start "" "C:\Path\Program.exe" /param1 /param2 pause
@echo off start "" "C:\Path\Program.exe" /param1 /param2