首页 > php教程 > php手册 > 正文

swoole 1.7.3发布,增加PHP多进程管理模块

php中文网
发布: 2016-06-06 20:12:45
原创
1419人浏览过

php的异步并行扩展swoole,最近增加了多进程管理模块swoole_process,用来替代php的pcntl扩展。 PHP自带的pcntl,存在很多不足,如: pcntl无法用在fpm/apache中 pcntl没有提供进程间通信的功能 pcntl不支持重定向标准输入和输出 pcntl只提供了fork这样原始

php的异步并行扩展swoole,最近增加了多进程管理模块swoole_process,用来替代php的pcntl扩展。

PHP自带的pcntl,存在很多不足,如:

  • pcntl无法用在fpm/apache中
  • pcntl没有提供进程间通信的功能
  • pcntl不支持重定向标准输入和输出
  • pcntl只提供了fork这样原始的接口,容易使用错误

swoole_process提供了比pcntl更强大的功能,更易用的面向对象风格API,使PHP在多进程编程方面更加轻松。

swoole_process提供的功能特性:

  • swoole_process提供了基于unixsock的进程间通信,使用很简单只需调用recv/send即可
  • swoole_process支持重定向标准输入和输出,在子进程内echo不会打印屏幕,而是写入管道,读键盘输入可以重定向为管道读取数据
  • swoole_process允许用于fpm/apache的Web请求中
  • 配合swoole_event模块,创建的PHP子进程可以异步的事件驱动模式
  • swoole_process提供了exec接口,创建的进程可以执行其他程序,与原PHP父进程之间可以方便的通信
  • swoole_process可以安全地用于fpm/apache环境下

代码示例:

Php代码

Difeye-敏捷的轻量级PHP框架
Difeye-敏捷的轻量级PHP框架

Difeye是一款超轻量级PHP框架,主要特点有: Difeye是一款超轻量级PHP框架,主要特点有: ◆数据库连接做自动主从读写分离配置,适合单机和分布式站点部署; ◆支持Smarty模板机制,可灵活配置第三方缓存组件; ◆完全分离页面和动作,仿C#页面加载自动执行Page_Load入口函数; ◆支持mysql,mongodb等第三方数据库模块,支持读写分离,分布式部署; ◆增加后台管理开发示例

Difeye-敏捷的轻量级PHP框架 0
查看详情 Difeye-敏捷的轻量级PHP框架

立即学习PHP免费学习笔记(深入)”;

  1. $worker_num?=?8;
  2. for($i?=?0;?$i?$worker_num;?$i++)
  3. {
  4. ????$process?=?new?swoole_process(‘callback_function’,?true);
  5. ????$pid?=?$process->start();
  6. ????$workers[$pid]?=?$process;
  7. }
  8. foreach($workers?as?$pid?=>?$process)
  9. {
  10. ????$process->write(“hello?worker[$pid]\n”);
  11. ????echo?”From?Worker:?”.$process->read();
  12. }
  13. for($i?=?0;?$i?$worker_num;?$i++)
  14. {
  15. ????$ret?=?swoole_process::wait();
  16. ????$pid?=?$ret['pid'];
  17. ????unset($workers[$pid]);
  18. ????echo?”Worker?Exit,?PID=”.$pid.PHP_EOL;
  19. }
  20. function?callback_function(swoole_process?$worker)
  21. {
  22. ????//echo?”Worker:?start.?PID=”.$worker->pid.”\n”;
  23. ????//recv?data?from?master
  24. ????$recv?=?$worker->read();
  25. ????echo?”From?Master:?$recv\n”;
  26. ????//send?data?to?master
  27. ????$worker->write(“hello?master\n”);
  28. ????sleep(2);
  29. ????$worker->exit(0);
  30. }

子进程事件驱动模式

Php代码

立即学习PHP免费学习笔记(深入)”;

  1. function?callback_function_async(swoole_process?$worker)
  2. {
  3. ????//echo?”Worker:?start.?PID=”.$worker->pid.”\n”;
  4. ????//recv?data?from?master
  5. ????$GLOBALS['worker']?=?$worker;
  6. ????swoole_event_add($worker->pipe,?function($pipe)?{
  7. ????????$worker?=?$GLOBALS['worker'];
  8. ????????$recv?=?$worker->read();
  9. ????????echo?”From?Master:?$recv\n”;
  10. ????????//send?data?to?master
  11. ????????$worker->write(“hello?master\n”);
  12. ????????sleep(2);
  13. ????????$worker->exit(0);
  14. ????});
  15. }

PHP创建一个Python子进程,并与之通信

Php代码

立即学习PHP免费学习笔记(深入)”;

  1. $process?=?new?swoole_process(‘pyhon_process’,?true);
  2. $pid?=?$process->start();
  3. function?pyhon_process(swoole_process?$worker)
  4. {
  5. ????$worker->exec(‘/usr/bin/python’,?array(“echo.py”));
  6. }
  7. $process->write(“hello?world\n”);
  8. echo?$process->read();
  9. $ret?=?swoole_process::wait();
  10. var_dump($ret);

Python程序echo.py

Python代码

  1. import?sys
  2. def?main():
  3. ????s?=?raw_input()
  4. ????print?”Python:”?+?s
  5. main()
相关标签:
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号