我使用外部API来收集对象的数据。外部API的结构方式,我必须对API的不同部分进行5次单独调用,以获得我需要的所有数据。
到目前为止,我一直按顺序执行此操作,但每次迭代需要大约5秒钟,这使得在处理多个对象时需要等待很长时间。
我想要做的是将5个任务分配给单独的进程,让它们各自联系API,然后使用它们的数据集部分更新数组。
我正在看pcntl_ *函数来做这件事,但是我不确定最佳做法是什么才能有效地做到这一点。
基本上,验证对象数据是否存在于远程系统中,我希望并行调用五个函数。 Func1 - func5,每个都传递了对象的ID,我想某种方式可以指示进程需要执行的5个操作中的哪一个。
调度procs并且父级等待直到所有五个返回,并将其结果添加到全局数组。
此时,父节点将数组发送回请求者并终止。在伪代码中,我认为处理分叉的函数会起到这样的作用:
function LoadObjectData( $oid ) {
$data = array();
// fork our individual operations on the object
forkit( $oid, FUNC_ONE, &$data );
forkit( $oid, FUNC_TWP, &$data );
forkit( $oid, FUNC_THREE, &$data );
forkit( $oid, FUNC_FOUR, &$data );
waitForForksToFinish();
return $data;
}
第二个论点是儿童需要做哪些功能的某种指标,我认为这只是文件中的4个其他功能。
pcntl_ *是最好的方法吗? 这是代码的最佳结构吗? 需要哪些实际的pcntl_ *调用?
感谢。