互联网与开源带来的好处就是,你遇见的问题别人都遇见过,你想要的解决方案别人都给出了。但是那么多的开源产品,到底该怎样去选择与甄别是否适合自己的项目,这里推荐一些自己开发中常用的库以及开发工具,每一个类只会推荐一个,免去你选择的痛苦。
框架
Laravel 是首推的 PHP 开发框架,用它官网的介绍就是“为 Web 艺术家创造的 PHP 框架”。Laravel 框架的底层代码都是跟进时代潮流的,用的都是最新的技术。而且它的学习门槛虽然高,但却是督促个人进步的好工具。优雅的路由、强大的 IOC 容器、可拓展的服务提供者、队列、缓存、通知、事件、广播等等你在开发一个大型应用中可能用到的都给你做好了,还有全文搜索引擎、支付解决方案、社会化登录等等,Laravel 基本上是 PHP 上的划时代框架。
网络通信
网络通信相比与传统的 Web 应用,它会更加的偏像底层一些,对开发者的基础知识要求会更高。这里首推 Swoole 这个异步网络通信引擎。用他官网的话来介绍就是:
使 PHP 开发人员可以编写高性能的异步并发 TCP、UDP、Unix Socket、HTTP,WebSocket 服务。Swoole 可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。
它虽然要求开发者要懂得操作系统、网络、进程的知识,但是实际上很好上手,通过 Swoole 开发一个 WebSocket 服务器很简单,有机会写一篇基于 Swoole 的微信扫码登录的实现。
包管理
PHP 在引入了命名空间后,在生态中 Composer 就是最先进的依赖管理方案。相比于 5.3 版本之前的使用 require 来包含文件,它确实是增加了学习的成本,但是带来的效率却是无限的。想象一下传统的通过引入源代码包,要先下载,required 一堆的文件;有了 Composer 之后,一行命令即可搞定,而且还解决了后期的升级问题。
代码部署
网络上充斥着非常多的代码部署和持续集成工具,比如 Jenkins、Travis CI、瓦力部署等等各种的工具,都有一个共同的问题就是学习成本,拿到手根本不知道该怎么去入手。这里推荐一个基于 PHP 开发的部署工具 Deployer,它的优点就是使用简单上手快、支持回滚、原子发布,并且支持。而且源码量也不多,不懂的地方可以很方便的去阅读源码来调试。
网络请求
网络请求可能在开发中用的不多,但是有用到的话自己写却是非常的繁琐。这里首选推荐 Guzzle 这一个网络请求库,它的语法非常简洁,而且经过了这么多年的发展,代码非常稳定。不仅支持常见的 GET、POST、PUT、DELETE 等请求之外,还支持 OPTIONS、HEADER、PATCH 等请求,而且支持并行化调用,还可以通过中间件增加对重试机制的支持。
进程守护
现代化的 Web 引用开发中,会很经常用到队列或者以 CLI 方式运行的应用,而这种应用一旦进程挂了那么服务就中断了,所以很有必要一个进程守护工具来把挂掉的进程重新拉起来。这里推荐 Supervisor 这个基于 Python 开发的工具库,Supervisor 通过简单的 INI 风格的配置文件集中的管理进程,通过操作系统信号来监听进程的存活状态,支持简单的事件通知协议,兼容除了 Window 外的所有操作系统。
队列
队列常用在一些耗时的任务上,比如发送邮件短信、下载报表、处理图片等等,目前市面上开源的队列软件非常多,大名鼎鼎的有 Kafka、ActiveMQ、RabbitMQ、Redis等等,可以到 http://queues.io
上面去看看。其实对于一个常规的 Web 应用来说,这些重量级的一般都用不上,这里推荐 Beanstalkd 这个队列,它也是 Laravel 框架里面推荐使用的。
日志
日志系统对于一个 Web 应用来说,可以说是至关重要的。而且日志的量一般量都很大,类型又多,这里推荐使用 ELK 这个集中式的日志架构,可以查看一下我之前的文章:
采集工具
其实做爬虫最适合的语言还是 Python,当然用 PHP 来开发也是有很多利器的。首推 QueryList 这个基于 PHP 开发的采集工具,简单、 灵活、强大的PHP采集工具,让采集更简单一点。它的语法基本上和 jQuery 一致,可以来看一段代码:
//采集某页面所有的图片
$data = QueryList::get('http://cms.querylist.cc/bizhi/453.html')->find('img')->attrs('src');
//打印结果
print_r($data->all());
微信开发
微信创造了一个新的时代,然后基于微信的应用基本上以及统治了传统的 WAP 端应用了。微信公众号的开发工具包首推 EasyWeChat ,这是一个非官方的开源工具库,但是基本上涵盖了微信开发中的方方面面,包括公众号、企业微信、微信支付、开放平台以及小程序。新版本 4.0 也是一个 LTS 的版本,不过新版本的文档有些概念没描述清楚,使用方法相比旧版本繁琐了许多,这里建议如果只是公众号开发的话还是建议使用 3.0 版本的。
以上基本上涵盖了一个常规应用开发中的方方面面,当然对于大型的分布式应用来说可能还差很多。
最后来一波小福利,到公众号后台发送“oneui”,赠送一套好看的后台模板。
欢迎关我的个人公众号:左手代码
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。