У меня есть код, похожий на этот:
($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?