在后台线程/进程中调用函数(分叉)
2022-08-30 21:16:13
我有一些代码有点像这样:
($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?