博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CLI下另一种多进程实现方式----PCNTL
阅读量:6657 次
发布时间:2019-06-25

本文共 698 字,大约阅读时间需要 2 分钟。

有些时候,你需要对一些脚本进行优化,以期跑的更快,在更短的时间内完成任务。PCNTL是一个不错的选择,它可以fork多个进程,来协同完成一个任务,理论上完成的时间将会和进程数成反比。

不过,PCNTL只能用于CLI模式下,不能用于Web服务器环境,否则可能会带来意料之外的错误,不推荐使用。

  • 安装PCNTL扩展:

    wget 

    tar -jxvf php-5.3.27.tar.bz2
    cd php-5.3.27/ext/pcntl/
    phpize && ./configure && make install
    echo "extension=pcntl.so" >> /application/php5.3.27/lib/php.ini
    kill -USR2 `cat /var/run/php-fpm.pid`
    下载->解压->编译->添加扩展模块->重启php-fpm

    注意:线上web服务器中,PHP编译时已经集成该函数,不需要再单独添加,否则会报warning。

    • 程序实例:
      程序流程在注释中已经比较详细的说明了,这里不再单独叙述。
    • 执行结果:
      从结果中可以看出来,虽然程序中fork子进程是有序的,但是在实际执行中并不一定是有序的,进程完成的顺序与进程开始的顺序也不是保持一致的。
      fork前,子进程可以继承父进程的东西,但是在pcntl_fork()后子进程和父进程就没有任何继承关系了。在子进程里创建的东西是子进程的,在父进程创建的东西是父进程的,可以完全看成是两个独立的进程。
      fork后,程序出了分岔,派生出了两个进程,具体哪个先运行,哪个先结束就看该系统的调度算法了。
    • demo
    •  

转载地址:http://izxto.baihongyu.com/

你可能感兴趣的文章
52-高级路由:重分发特性:RIP、OSPF
查看>>
LeetCode24-Swap Nodes in Pairs
查看>>
Java架构师学习路线图
查看>>
JPPF与Spring集成实现AOP的完整示例
查看>>
部署DDoS高防需要注意网络安全公司的哪些套路?
查看>>
【前端】前端框架集合与比较(集合贴)
查看>>
MyISAM 表级锁
查看>>
Elasitcsearch High Level Rest Client学习笔记(三)批量api
查看>>
FastReport教程:如何在Angular单页面应用程序中使用Online Designer
查看>>
自从有了企业WiFi管家,老板们都省心了
查看>>
酒店无线覆盖实施的规则
查看>>
高效算法——二分查找
查看>>
Linux几个常用的监控脚本
查看>>
Linux中文件查找技术
查看>>
JVM 垃圾回收机制
查看>>
Linq存储过程(一)
查看>>
go操作json,注意json的嵌套、数组
查看>>
我的友情链接
查看>>
编程世界是真实世界的缩影
查看>>
Python 3使用Basemap导入ESRI信息的问题
查看>>