Потоки


// Потоки в PHP - на уровне представления exec().
// Потоков-нитей, как в Python или Ruby - пока нет.

exec(...);
passthru(...);
shell_exec(...);
system(...);

proc_open(...);
proc_terminate(...);
proc_close(...);

// Есть fork(), но в модуле PCNTL, который не всегда установлен:

$pid = pcntl_fork();
if ($pid == -1) {
     die('could not fork');
}
else if ($pid) {
     // we are the parent
     pcntl_wait($status);
}
else {
     // we are the child
}

// Запуск процессов в Windows

$execStr =  "start /b $php $script $params";
pclose(popen($execStr, 'r'));

// Запуск процессов в Unix/Linux

$execstr =  "$php $script $params > /dev/null &";
exec($execStr);

// и второй, по-моему, более жесткий вариант:

$command = 'nohup '.$cmd.' > /dev/null 2>&1 & echo $!';
exec($command ,$op);
$pid = (int)$op[0];

// можно также получить статус - запустился ли фоновый процесс?

$ret = exec('foo; echo $?');