我有这样的代码:
($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,但是我无法使用它,因为我无法安装齿轮服务器(因为我在一个共享的服务器上).看来,通过分叉的方式来实现这一点.我尝试阅读很多关于它,但文档和支持很少.任何帮助/线框代码将不胜感激.
要定义我的问题,我如何调用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?