Esta era la parte de mi respuesta en el foro antiguo:
Gracias Triby: si vieras las vueltas que di hoy hasta que por fin lo encontré y el código que corre bien, pero es cierto en windows no hay forma de hacerlo directo a menos de instalar las herramientas de "PSExec", y vieras que en las primeras pruebas nada que me andaba... por que tenia que agregar el comando -accepteula, es como el acuerdo de licencia por mas que lo uses en el comando de linea, bueno finalmente este fue el código que me corrió en windows:
Código PHP:
<?php
// pstools.inc.php
function PsExecute($command, $timeout = 60, $sleep = 2) {
// First, execute the process, get the process ID
$pid = PsExec($command);
if( $pid === false )
return false;
$cur = 0;
// Second, loop for $timeout seconds checking if process is running
while( $cur < $timeout ) {
sleep($sleep);
$cur += $sleep;
// If process is no longer running, return true;
if( !PsExists($pid) )
return true; // Process must have exited, success!
}
// If process is still running after timeout, kill the process and return false
PsKill($pid);
return false;
}
function PsExec($command) {
//exec( dirname(__FILE__). "\\psexec.exe -s -d $command 2>&1", $output);
exec("psexec -accepteula -s -d $command 2>&1", $output);
while( list(,$row) = each($output) ) {
$found = stripos($row, 'with process ID ');
if( $found )
return substr($row, $found, strlen($row)-$found-strlen('with process ID ')-1); // chop off last character '.' from line
}
return false;
}
function PsExists($pid) {
//exec( dirname(__FILE__). "\\pslist.exe $pid 2>&1", $output);
exec("pslist -accepteula $pid 2>&1", $output);
while( list(,$row) = each($output) ) {
$found = stristr($row, "process $pid was not found");
if( $found !== false )
return false;
}
return true;
}
function PsKill($pid) {
//exec( dirname(__FILE__). "\\pskill.exe $pid", $output);
exec("pskill -accepteula $pid", $output);
}
?>
Un saludo y de nuevo gracias