互联网与开源带来的好处就是,你遇见的问题别人都遇见过,你想要的解决方案别人都给出了。但是那么多的开源产品,到底该怎样去选择与甄别是否适合自己的项目,这里推荐一些自己开发中常用的库以及开发工具,每一个类只会推荐一个,免去你选择的痛苦。
框架
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等等,可以到 上面去看看。其实对于一个常规的 Web 应用来说,这些重量级的一般都用不上,这里推荐 Beanstalkd 这个队列,它也是 Laravel 框架里面推荐使用的。
日志
采集工具
其实做爬虫最适合的语言还是 Python,当然用 PHP 来开发也是有很多利器的。首推 QueryList 这个基于 PHP 开发的采集工具,简单、 灵活、强大的PHP采集工具,让采集更简单一点。它的语法基本上和 jQuery 一致,可以来看一段代码:
微信开发
以上基本上涵盖了一个常规应用开发中的方方面面,当然对于大型的分布式应用来说可能还差很多。
领取专属 10元无门槛券
私享最新 技术干货