php swoole框架之一hyperf
PHP一定能让人想起这句话: PHP是世界上最好的语言!
先贴出框架在github里的开源地址:
hyperf开源地址:
了解一下Hyperf 是什么?
Hyperf 是基于 Swoole 4.5+ 实现的高性能、高灵活性的 PHP 协程框架,内置协程服务器及大量常用的组件,性能较传统基于 PHP-FPM 的框架有质的提升,提供超高性能的同时,也保持着极其灵活的可扩展性,标准组件均基于 PSR 标准 实现,基于强大的依赖注入设计,保证了绝大部分组件或类都是 可替换 与 可复用 的。
本来打算将三个常用的swoole框架 swoft, easySwoole, 与hyperf集中到这篇文章的,但发现主题太大,一篇简短的文章难以描述清楚,所以先从最新的hyperf框架说起吧。
思考一下为什么要使用hyperf,列出一些问题点?
1 swoole框架与php框架有什么相同点和不同点?
2 为什么要用swoole框架?
3 hyperf简单好学好用吗?
文章标题已经定义了我们是围绕swoole的框架来开展的,所以非原生支持swoole的框架,比如YII或者Laravel,就先不讲了,这两个框架很多PHP开发都熟悉并且在目前多数中小型企业里一直有使用,当然也可以手动配置集成swoole到框架里,这篇文章只讲原生集成swoole的框架。
学习hyperf的框架一定要熟悉php的基本语法知识,最好把Laravel这个框架有一定了解,学习起来就比较轻松,如果熟悉Yii或者Laravel后在去看swoole框架完全是手到擒来,两个字简单。
做事,我们要在战术上藐视“敌人”,战略上重视“敌人”,首先保持一个良好的心态
1 swoole框架与php框架有什么相同点和不同点?
分析这个问题时,得先讲一讲swoole是什么?
Swoole 使用 C/C++ 语言编写,提供了 PHP 语言的异步多线程服务器、异步 TCP/UDP 网络客户端、异步 MySQL、异步 Redis、数据库连接池、AsyncTask、消息队列、毫秒定时器、异步文件读写、异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。
除了异步 IO 的支持之外,Swoole 为 PHP 多进程的模式设计了多个并发数据结构和IPC通信机制,可以大大 简化多进程并发编程的工作。其中包括了并发原子计数器、并发 HashTable、Channel、Lock、进程间通信IPC 等丰富的功能特性。
Swoole4.0 支持了类似 Go 语言的协程,可以使用完全同步的代码实现异步程序。PHP 代码无需额外增加任何 关键词,底层自动进行协程调度,实现异步IO。
以上swoole的特性来自于swoole的官网:
swoole
简单点理解:Swoole不是框架,而是一个C/C++实现的PHP异步引擎.
顺便啰嗦一句,swoole已经商业化了,想集成swoole到自己项目里的普通人记得使用社区版本~
了解swoole后再看看关于框架的问题点:
1 swoole框架与php框架有什么相同点和不同点?
2 为什么要用swoole框架?
3 hyperf简单好学好用吗?
1 swoole框架与php框架有什么相同点和不同点?
先简化问题点
相同点:
1)都是php语言(解释型语言)开发,都需要php底层支撑
不同点:
1 )php运行依赖php-fpm与fastcgi(至于这两个是什么,有什么关系,大家可以自行搜索一下便清楚)php 框架的请求处理都是以进程为单位来同步执行的,hyperf依赖swoole是有线程与协程的支撑,可以自动进行协程调度,实现异步
2)原生php对资源消耗较大,处理数据能力较弱, swoole 可以提高php的处理性能
3)hyperf依赖swoole库的支撑,才能运行起来,如果swoole不支持最新版本php(比如8.0)则框架也无法使用,原生php语言没有这种限制。
如果要深刨底层可能写20篇文章能说清楚算好的了,这里只做一个大概性的了解。
2 为什么要用swoole框架?
1)这里可以返回再次读一次什么是hyperf。
2)Yii或者Laravel也可以手动配置swoole,只不过操作过程会复杂化,并且涉及三方SDK时会有一些深坑。
3)集成swoole的框架就是为了简化配置,操作与流程。
3 hyperf简单好学好用吗?
这是一个仁者见仁智者见智的问题,如果有用过go和Laravel会发现集成swoole学习了go的优点, hyperf集成了Laravel的一些实现,使用优秀“轮子”是一件好事。
没有学习过php的小伙伴会比较吃力, 但可以完全按hyperf的教程一步步学习,世上无难事,只怕有心人。
hyperf官网的网址以及学习文档地址:
https://www.hyperf.io/
hyperf
这篇文章比较简短,就围绕着swoole的框架hyperf来说明的,针对中小型的企业,有这套框架来支撑开发还是比较不错的,稳定了开发效率,提升了性能,我比较建议PHP的开发向swoole的框架靠拢(包括但不局限于hyperf, esasySwoole, swoft),传统的php框架真的的是比较浪费资源。
有人肯定会说php8.0 jit不是出来了吗?欢迎留言讨论php8.0 jit。
喜欢的话就关注点个赞吧
我将开始在头条分享github里的点点滴滴与优秀的开源项目,希望大家多多支持。
盘点如何利用PHP生成PDF文件
在PHP代码中生成PDF文件是一项非常耗时的工作,早期的程序员通常是在PHP代码中利用FPDF生成PDF文件。但在如今,有很多的函数库可以使用,借助它们你可以从你提供的HTML文档生成PDF文件,从而让工作变得简单方便起来。
FPDF
FPDF是一个PHP类,它允许用纯PHP代码生成PDF文件,这也就是说我们不用使用PDFlib库。FPDF中的F就代表着自由:你可以以各种方式使用它,并根据你的需求调整它。下面我们来看看FPDF的特征:
- 自由选择单元格,页面格式和边距;
- 管理页眉和页脚;
- 自动分页;
- 自动换行和文本对齐;
- 支持图片(JPEG,PNG,GIF);
- 颜色管理;
- 支持链接;
接下来再介绍一下可以直接从HTML生成PDF的函数库。
DomPDF
DomPDF是一个从HTML到PDF的转换器,它遵循CSS2.1的HTML布局,还有是用PHP编写的渲染引擎。DomPDF以样式为主导:它可以下载和读取外链样式表,内链样式标签和HTML元素的属性。它的特点包括:
- 处理CSS属性,包括了@import,@media和@page规则;
- 支持HTML的可见属性;
- 支持外部样式表,通过本地或http/ftp;
- 支持复杂的表结构;
- 支持图片(JPEG,BMP,PNG,GIF);
- 不依赖于其他PDF库;
TCPDF
TCPDF是一个用于生成PDF文件的开源PHP类,该项目起源于2002年,现在已经有全世界成千上万的人在使用。它的提点包括:
- 基本功能不需要外部函数库;
- 支持标准页面格式,自定义页面格式;
- 支持UTF-8编码和从右向左的语言;
- 支持各种字体;
- 支持图片和图形的转换;
- 支持页面压缩;
- 支持页眉和页脚管理;
本站文章除注明转载外,均为本站原创或翻译
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。