/** * Signfork子进程执行方法 * 1、pcntl_fork 生成子进程 * 2、file_put_contents 将'$obj->__fork($val)'的执行结果存入特定序列命名的文本 * 3、posix_kill杀死当前进程 * @param object $obj 待执行的对象 * @param object $i 子进程的序列ID,以便于返回对应每个子进程数据 * @param object $param 用于输入对象$obj方法'__fork'执行参数 */ private function spawn($obj, $i, $param = null) { if (pcntl_fork() === 0) { $cid = getmypid(); //获取本身的ID(子进程的ID) file_put_contents($this->tmp_path . 'sfpid_' . $cid, $obj->__fork($param)); //把执行的逻辑的结果写入到执行的子进程结果文件 posix_kill($cid, SIGTERM); //杀死子进程 exit; //退出加快回收内存 } }
/** * Signfork子进程执行方法 * 1、pcntl_fork 生成子进程 * 2、file_put_contents 将'$obj->__fork($val)'的执行结果存入特定序列命名的文本 * 3、posix_kill杀死当前进程 * @param object $obj 待执行的对象 * @param object $i 子进程的序列ID,以便于返回对应每个子进程数据 * @param object $param 用于输入对象$obj方法'__fork'执行参数 */ private function spawn($obj, $i, $param = null) { if (pcntl_fork() === 0) { $cid = getmypid(); file_put_contents($this->tmp_path . 'sfpid_' . $cid, $obj->__fork($param)); posix_kill($cid, SIGTERM); exit; } }