Вызов функции в фоновом потоке / процессе (разветвление)

У меня есть код примерно такого рода:

($i=0; $i < 100; $i++)
{
   do ($foo[$i]);
}

Вышеупомянутая задача требует больших затрат времени , и я надеялся, что смогу создать функцию и вызвать ее дважды, как показано ниже

function wrapper($start;$end)
{
    ($i=$start; $i < $end; $i++)
    {
       do ($foo[$i]);
    }
}
//have both of these run in parallel
wrapper(0,50);
wrapper(51,100);

. Я посмотрел на Gearman, но я не могу его использовать, так как не могу установить сервер gearman (поскольку я нахожусь на общем сервере). Похоже, что можно добиться этого путем разветвления. Я пробовал много читать об этом, но документации и поддержки мало. Любой справочный / каркасный код приветствуется.

Чтобы определить свой вопрос, как я могу вызвать wrapper () , передавая аргументы, чтобы он выполнялся в дочернем процессе. Также важно, чтобы я мог зарегистрировать функцию обратного вызова.

Дополнительная информация: PHP 5.3, работающий на сервере Linux. Скрипт выполняется cgi-fcgi.

Я думаю, что именно так я должен порождать дочерний процесс, но как я могу использовать его для порождения нескольких дочерних процессов? И как мне зарегистрировать функцию обратного вызова?

$pid = pcntl_fork(); 

if ( $pid == -1 ) {        
    // Fork failed            
    exit(1); 
} else if ( $pid ) { 
    // The parent process
    //should I repeat this same code here to spawn another child process?

} else { 
    // the child process 
    //can I call wrapper from here and will it run in this child process?
18
задан xbonez 26 January 2012 в 04:48
поделиться