如何使用工具提高PHP项目的生产力 2--洪涛
2020-02-27 145浏览
- 1.
- 2.如何使⽤用⼯工具提⾼高 PHP 项⺫⽬目的⽣生产⼒力 2 洪涛 PHPCon 2015
- 3.⾃自我介绍 • 洪涛 • 携⻋车⺴⽹网CTO • 10年开发经验 开源技术爱好者/协作者 喜欢研究各种开源技术并应⽤用在⼯工作中
- 4.回顾去年提到的项⺫⽬目 • Composer • Apigility • Vagrant • Slack
- 5.我们为什么要通过⼯工具 提⾼高项⺫⽬目的⽣生产⼒力? • 「互联⺴⽹网+」是什么? • 「互联⺴⽹网就像是电,每个⾏行业都可以使⽤用」 • 「互联⺴⽹网+」思维对我们技术⼯工作者的启发 • 专注核⼼心业务逻辑,把各种⼯工具当成是电直接使 ⽤用,避免「反复造轮⼦子」,通过运⽤用各种⼯工具提 ⾼高项⺫⽬目的⽣生产⼒力
- 6.今天会讲到的内容 • 换种姿势跑PHP • PHP 与 Docker • PHP项⺫⽬目的持续集成 • PHP项⺫⽬目的性能监控
- 7.换种姿势跑PHP
- 8.为什么要换种姿势? • 扩展PHP的⽤用途 • 提⾼高现有PHP项⺫⽬目运⾏行速度 • 希望每台服务器利⽤用到极限 • 运⾏行环境有限
- 9.跑PHP的新姿势 • HHVM • Workerman / Swoole / ReactPHP + PHP-PM / phpDaemon • Phalcon / YAF
- 10.如何选择?
- 11.现有Web应⽤用 • 速度慢怎么办? • 通⽤用解决⽅方案: 升级成HHVM • 优化瓶颈代码? ⽤用Zephir将瓶颈代码重构成为PHP Extension • 想实现异步/协程? fastcgi_finish_request/Recoil(ReactPHP)/Swoole/MQ • 是Symfony2/Laravel框架的项⺫⽬目? 升级成ReactPHP实现异步
- 12.新项⺫⽬目/新功能 • Socket/HTTP⻓长连接: • 纯PHP实现:Workerman • 精通俄语/爱折腾:phpDaemon • 觉得上⾯面两个性能不够强:Swoole • Web应⽤用: • 只有两台服务器但访问量有上千万:Phalcon/YAF • 业务逻辑复杂/实现快速开发迭代 找框架去(Symfony2/Laravel/ThinkPHP/Yii/CI/......) • PHP脚本/命令⾏行程序 • ⽤用HHVM去跑 • 嵌⼊入式应⽤用 • HipHop/Phalcon
- 13.最佳实践和建议 • 由于Workerman/ReactPHP没有依赖任何外部扩 展和类库,所以可以⽤用HHVM去跑基于这两个异 步框架的项⺫⽬目 • HHVM还处于不稳定状态,代码兼容性有问题 • 项⺫⽬目异步化之后,要注意保持业务逻辑的原⼦子化 • 异步化终究还是要让专业的来,推荐RabbitMQ
- 14.PHP 与 Docker
- 15.为什么要虚拟化? • 环境搭建:开发/测试/CI环境/Staging/Prod/演⽰示/ POC/试⽤用,再加上不同的分⽀支 • 实现架构的弹性扩充 • 提⾼高运算效率,降低IT成本
- 16.现有虚拟机技术 普遍存在的⼀一些缺点 • 虚拟机越多,对宿主服务器的资源浪费也就越⼤大, 系统整体稳定性就越低,管理成本也越⼤大 • ⽅方案复杂,系统部署脚本需要第三⽅方⽀支持,很难 和开发相结合 • 企业级⽅方案价格昂贵,系统维护费时费⼒力。
- 17.Docker • 近年来最⽕火的虚拟机技术 • 是⼀一个「轻量级」的虚拟机 • 是⽤用Go语⾔言实现的⽤用来操作LxC的管理软件。 • 提供了对程序员/系统⼯工程师⾮非常友好的操作体验 • 使虚拟化技术变得简单易⽤用
- 18.Docker可以做到 • 在1秒内完成:创建⼀一个虚拟机,运⾏行特定程序, 然后销毁该操作系统。 • 在服务器上同时运⾏行数百个虚拟机。资源占⽤用极 ⼩小,可以⽤用最⼩小的资源去运⾏行⼤大量虚拟机和程序 • 使环境变得像代码⼀一样⽅方便管理和维护。 • 使⼤大规模部署变得简单。 • 最⼤大程度利⽤用现有硬件资源。
- 19.PHP开发环境进化史 • 以前 • APMServ/EasyPHP/XAMPP/MAMP/remote mount + server/local environment…… • 去年 • ⽤用Vagrant搭建开发环境 • 今年 • PHP with Docker
- 20.Vagrant和Docker的区别 • 使⽤用场景的区别 • Vagrant主要⽤用在开发环境 • Docker则可以⽤用在开发和⽣生产环境 • 定位上的区别 • Vagrant只是虚拟机管理软件,需要搭配Chef/Puppet等⾃自动化运维 脚本才能构建系统 • Docker提供了全套的解决⽅方案(images/docker-compose) • 使⽤用上的区别 • Vagrant可以⽤用来管理Docker虚拟机,然⽽而⼏几乎没有⼈人这么干
- 21.使⽤用Docker后的开发流程 • Pull⼀一个最新的镜像到本地 • 写代码+修改系统配置+优化系统配置 • 将当前代码和环境打包成镜像,Push到服务器 • 执⾏行部署命令,将镜像部署到云服务器
- 22.PHP在⽣生产环境中使⽤用 Docker的典型场景 • 在⼀一台服务器上运⾏行多个PHP应⽤用 • 实现系统架构的弹性扩充 • 实现应⽤用的隔离性
- 23.⼀一些Docker相关资源 • ⽐比较好的中⽂文教程 •https://github.com/nicescale/docker-training• all in one的PHP开发环境 •https://github.com/EvaEngine/Dockerfiles • Docker虚拟机管理器 • docker-compose/docker-machine/swarm • Shipyard • Docker国内镜像 •http://daocloud.io
- 24.Shipyard
- 25.PHP项⺫⽬目的持续集成
- 26.持续集成 - 以前我们怎么做 • Hudson/Jerkins • PHPUnit/Behat/Atoum • PHP Mess Detector/PHP CodeSniffer/PHP Depend/PHP Copy Paste Detector/PHP Documentation Generator/PHPLOC
- 27.现在如何做持续集成 • Scrutinizer • SensioLabsInsight
- 28.线上持续集成⼯工具 - Scrutinizer
- 29.每次提交后⾃自动进⾏行代码分析
- 30.
- 31.对国内没有相关服务 的⼀一些反思
- 32.PHP项⺫⽬目的性能监控
- 33.性能监控 - 以前我们怎么做 • 各种画图/监控⼯工具 • MRTG/Cacti/Munin/Nagios/Ganglia/Zabbix/ Graphite • 各种分析⼯工具 • XHProf/XDebug/apc.php/opcache.php/strace
- 34.现在我们如何做监控 • 国外 • NewRelic • Blackfire • Tideways • 国内 • OneAPM • 听云 • 透视宝
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.谁更好⽤用⼀一点?
- 41.其他能够提⾼高⽣生产⼒力的 ⼯工具
- 42.信息流整合软件 • 国外 • Slack • Hipchat • 国内 • pubu.im • talk.ai • BearyChat • lesschat
- 43.
- 44.问答