Только ключевые моменты:
– магия происходит с помощью функции 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]
Вот такой вот порядок.