PHP的异步并行编程.pptx

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PHP 异步并行编程 Rango-韩天峰 关于我 Github: /matyhtf 一个PHP Web程序的执行过程 PHP-FPM进程的完整流程 Accept Recv Send Close 多进程并发地处理请求 请求1 - 请求2 - …… - 请求N 进程1 进程2 进程3 …… 进程N 如何实现请求的公平分配? Accept Recv Send Close Server Web PHP Web服务也只是整个服务器端的一部分而已。Web之外还有FTP文件服务、SMTP邮件、聊天、PUSH消息等 开始探索之旅,学习底层网络通信 备注:PPT中的所有代码都可以在我的gist主页上找到 /matyhtf 大家用过这些扩展吗? stream sockets libevent/event pcntl/posix pthread sysvsem/sysvmsg shmop/sysvshm 第一个Server,阻塞+fork子进程 第二个Server,改良版 初次尝试异步(1) 阅读圣经:《Unix网络编程》(UNP) select: stream_select / socket_select Nginx,memcache:libevent epoll ,异步的核心就是它 PHP的libevent扩展、Event扩展 初次尝试异步(2) PHP实现Server的好处是什么? 普通LAMP程序,PHP的所有对象请求时创建,请求结束时全部销毁。对于普通PHP程序来说避免了内存泄漏。对于大型网站来说,这是严重的资源浪费。 PHP-Server中每次请求仅销毁与请求相关的对象。与请求无关的全局对象都不需要销毁。直接在下一次请求中复用。比如一个大数组,PHP-fpm每次都要构建HashTable,而PHP-Server程序完全不需要 PHPer可以操控的范围更大了,局部缓存,Once操作,写文件合并,长连接,对象持久化,数据库连接池等都可以做。 C扩展 PHP框架 PHPDaemon React.PHP 腾讯 PSF WorkerMan Swoole 为什么要用C扩展实现 性能,C代码实现的类和函数比PHP性能强10-100倍 内存,C扩展中对内存的控制可以精确到bit 数据结构,C扩展中可以针对不同的场景使用最优数据结构,而PHP代码中只有数组可用 直接操作底层,不需要依赖大量第三方扩展,而且粒度更小。如基于pcntl实现的信号处理,必须依赖PHP的tick机制,性能很差。 原子操作,C语言可以使用atomic操作实现自旋锁,原子自增/自减 开始使用Swoole扩展 TCP-Server TCP-Async-Client TCP-Sync-Client 异步MySQL 异步Redis 异步任务 Http服务器 WebSocket服务器 使用场景 swoole_http_server + redis-async + mysql-async + tcp-client- async,编写多进程全异步的Web程序 TCP-server + TCP-Client 实现SOA服务器,php-fpm中使用TCP-Client + select实现并发请求。PHP实现4层架构、服务化治理 swoole_websocket_server实现WebIM和PUSH系统 基于异步任务实现非响应逻辑的异步化,如在Http请求中发送邮件、发送短信 毫秒定时器 异步Cli程序 并发HashTable 多进程/IPC/消息队列 Q A

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档