zoukankan      html  css  js  c++  java
  • PHP多线程

    PHP 在liunx里面是可以实现多进程的,但需要使用liunx扩展:pcntl 扩展

    主要代码是

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $pid = pcntl_fork();    //创建子进程
    if ($pid == -1) {
       die('could not fork');   //错误处理:创建子进程失败时返回-1.
    }else if ($pid) {
       pcntl_wait($status,WNOHANG);
         //父进程会得到子进程号,所以这里是父进程执行的逻辑
         //如果不需要阻塞进程,而又想得到子进程的退出状态,则可以注释掉pcntl_wait($status)语句,或写成:
        //等待子进程中断,防止子进程成为僵尸进程。
    }else {    
         exit(0);//子进程得到的$pid为0, 所以这里是子进程执行的逻辑。
    }
    PHP进程

    PHP进程

    从这样,可以看出来,父进程和子进程不是同步关系。父进程结束,子进程可以继续执行,父进程在等待子进程结束并回收。

    PHP进程

    PHP进程

     这里的PHP-fpm 都是fork出来的子进程,并且都是并行执行的。 所以原本单线程需要23分钟执行的代码,这里fork出20个子进程,就可以把时间缩短到30秒
  • 相关阅读:
    gitlab
    MySQL千万级别大表,你要如何优化?
    kafka入门
    zookeeper的原理和应用
    MySQL 性能优化之慢查询
    Redis一些新的看法
    mysql 数据库锁
    MYSQL查看进程和kill进程
    hadoop批量命令脚本xcall.sh及jps找不到命令解决
    java stream 处理分组后取每组最大
  • 原文地址:https://www.cnblogs.com/gaf617/p/7281196.html
Copyright © 2011-2022 走看看