php rodar funcoes como processos
class Background
{
/*
$cmd -> A linha de comando a executar.
$opt -> Opção de parâmetros para o ambiente onde executa o script.
*/
public static function Call($cmd, $opt = 'start')
{
if (stripos(php_uname('s'), 'windows') !== false) {
/*
Condições de parâmetros para ambiente Windows.
*/
switch ($opt) {
default:
case 'start':
$prefix = 'start /B '; // Esse aqui é o padrão, pois é compatível com as versões mais recentes do Windows.
$sufix = '';
break;
case 'nul':
$prefix = '';
$sufix = ' > NUL 2> NUL';
break;
}
} else {
/*
Opções para ambiente *nix. (isso inclui os-x)
Normalmente o sufixo ` &` é compatível com diversas distribuições Linux. Esse parâmetro diz ao sistema operacional executar em background.
*/
switch ($opt) {
default:
case '&':
$prefix = '';
$sufix = ' &';
break;
case 'dev-null':
$prefix = '';
$sufix = ' > /dev/null 2>/dev/null &';
break;
}
}
exec(sprintf('%s%s%s', $prefix, $cmd, $sufix));
return null;
}
}
define('PHP_PATH', '/local/do/binario/php');
echo 'start '.microtime(true);
Background::Call(PHP_PATH.' "/local/de/um/arquivo.php"');
Background::Call(PHP_PATH.' "/local/de/um/arquivo.php"');
Background::Call(PHP_PATH.' "/local/de/um/arquivo.php"');
echo PHP_EOL.'end '.microtime(true);