Пример #1
0
 /**
  * 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;
         //退出加快回收内存
     }
 }
Пример #2
0
 /**
  * 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;
     }
 }