<[EMAIL PROTECTED]> schrieb im Newsbeitrag
news:[EMAIL PROTECTED]...
> I am running a WIMP configuration and I want to use exec() to call
mysql.exe via my PHP script to run a big sql script in the background. The
PHP script executes the sql script via mysql.exe but my PHP script hangs
until the mysql process has finished. Does anybody know how I can run the
exec() command totally in the background on a WIMP system ? (I tried a lot
with "2>1&" and "cmd/c" etc.)
------------------------------------------
Please read this from [EMAIL PROTECTED]:

Mwct - Markus Weber wrote:
> Hi,
>
> may be someone can help me:
>
> I want to use the exec() function to run an executable as background
> process. This means my php script should not wait for the end of the
> background process. I tried a lot but without success. My script always
wait
> for the end of the background process.
>
> My php script contains this line:
>
> exec(getenv("COMSPEC").' /c c:\mysql\bin\mysql.exe <
> E:/Inetpub/wwwroot/update/load_logs.sql >
> E:/Inetpub/wwwroot/update/load_logs.log');
>
> Regarding to the online documentation on php.net all screen output is
> redirected to the file "load_logs.log".
>
> When I type in this string via command line the execution is successful.
>
> As I learned from the online documentation on php.net is that on LINUX
> systems something like "2>1&" or ">/dev/null" will help - but not on
> Windows.
>
> Any ideas ?

If this script will only ever be run on Windows servers, you can use the
Windows-specific shell capabilities through the COM interface.

$shell = new COM("WScript.Shell") or die("This thing requires Windows
Scripting Host");
$shell -> Run($commandinquotes,$windowstate,$wait);

Replace $commandinquotes with your commandline that you want to run. Put
it in single quotes. Replace $windowstate with 1, 2 or 3 for normal DOS
window, minimized or maximized and $wait with 0 in your case because you
don't want PHP to wait for the process to finish.

You could abstract it further by turning the COM "Run" into your own
function. The below code hasn't been tested.

function win_exec($command, $windowstate, $wait) {
$shell = new COM("WScript.Shell") or die("This thing requires Windows
Scripting Host");
$shell -> Run($commandinquotes,$windowstate,$wait);
}

$command = getenv("COMSPEC").' /c c:\mysql\bin\mysql.exe <
 > E:/Inetpub/wwwroot/update/load_logs.sql >
 > E:/Inetpub/wwwroot/update/load_logs.log';

win_exec($command, "2", "0");



-- 
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to