Только ключевые моменты:
– магия происходит с помощью функции pcntl_fork.
– работает только в CGI и CLI-режимах
– немного кода
$pid = pcntl_fork();
// создался дочерний процесс, все просто
// но дальше основная магия: выполнение едет в 2 независимых потока
// и все что будет дальше выполнится 2 раза
// резонный вопрос: как нам определить основной потом и дочерний
// а вот так:
if ($pid == -1) {
//функции не удалось создать поток - ошибка
} elseif ($pid) {
//если идентификатор есть - это родительский поток
} else {
//если нет - соответственно дочерний
}
i++; //а этот код будет выполнен обеими потоками
– теперь пример
$pid = pcntl_fork();
if ($pid == -1) {
die('Error of pcntl_fork');
} elseif ($pid) {
echo '[first]';
} else {
echo '[second]';
}
echo '[both]';
Выполним через командную строку:
$ php fork.php [first][both][second][both]
Вот такой вот порядок.