PHP本质上的运行方式能够分为两种: 基于命令行的基于PHP-FPM的但实质上,PHP能做的事非常多,非常多场景下,区别的运行方式能让研发更方便,减轻各样工作。
测试研发
PHP内置了一个HTTP 的server。这寓意着,非常多时候,咱们不需要nginx、apache、php-fpm、配置站点等等繁琐的操作,直接就能够运行php的代码。
例如这般简单的一行命令: php -S localhost:8000此时当前目录下的各类html、静态文件、php代码就都能正常返回运行了。
能够定义一个路由文件router.php,设置有些规则: <?php
// router.php
if (preg_match(/\.(?:png|jpg|jpeg|gif)$/, $_SERVER["REQUEST_URI"]))
return false; // 直接返回请求的文件
else {
echo "<p>Welcome to PHP</p>";
}上面的路由文件定义了,当请求照片时返回照片,否则返回一段html代码。
ThinkPHP自5.1的版本起,内置封装了PHP的内置服务器。只要再TP项目下运行命令: php think run这般这个框架就运行起来了,不需要配置Nginx、Apache、静态规则、站点的目录、域名host等等等,一行命令就能够起始研发了。此刻我在本地研发的时候,只把对应版本的PHP配置到环境变量里,其他的各类nginx等软件一律不消,研发非常方便。
不外这种方式只能用于测试研发或临时演示来用。PHP的内置服务器不可处理并发请求,所有的请求(包含css、js等文件)都只能一个一个的处理。然则做研发是完全足够的。
传统的安排方式
PHP的FPM是黑科技,这是真的,稳如老狗,怎么折腾都不会出问题,每一个请求之间隔离得清清楚,互不影响,这一点当你在用Java、Node、Go等Http框架下研发时就会体会到了。
通常而言,PHP-fpm和nginx协同。这亦是最平常的运行方式,资料非常多,亦有非常多成熟的面板帮忙研发者配置,这儿不多介绍。但这儿期盼强调一点,必定要开启opcache、必定要开启opcache、必定要开启opcache。
开启opcache之后,直接无脑的得到巨大的性能提醒。如今的PHP项目,PHP代码非常多,由于运用composer依赖等,随随便便几百个文件或小一千个文件是常态,有些重量级框架动辄几十M乃至上百M的代码,倘若不开启是opcache,老狗亦会难受。
基于TCP/UDP的网络编程
PHP有各样内置的网络编程扩展和函数,然则用起来比较麻烦,不直观。然则此刻有非常多成熟且流行的网络编程框架,能够基于TCP和UDP协议进行各类业务的研发,例如例如即时通讯类、物联网、游戏、服务治理、其它服务器或中间件、微服务等。
我亦多次介绍过这些项目了,她们亦都很热门,这儿再也不太多介绍:
Workerman
基于官方扩展运用纯PHP研发的网络编程和进程管理库,内置进程保护。
Swoole
纯C研发的PHP扩展库,高性能、协程。
ReactPHP
像Node同样的事件驱动框架。国外热门主流,衍生了非常多的有趣的项目,例如有人用它实现了一套Redis server。
Swow
运用C和PHP实现的一套框架,专注于IO。
GatewayWorker
基于Workerman研发的长连接框架,研发体验极佳,自动抹平协议沟通,实现TCP、websocket等各样协议的对接,支持分布式安排。
其他还有非常多,大众能够留言。
Revolt
将来事实上的PHP异步、协程标准。
基于TCP和Linux事件机制的高性能HTTP框架
其实便是基于上面介绍的框架实现的专门用于HTTP研发的框架。刚才介绍的框架基本是能够实现TCP、UDP网络编程的,本小节重点介绍研发HTTP的部分,大部分亦是基于上面这些框架实现的。
Webman
基于Workerman的高性能HTTP框架,简单易用,基本的MVC体验。
Swoole系
基于swoole扩展实现的高性能HTTP框架,例如easyswoole,Hyperf等等。
PHP-PM
基于ReactPHP实现的PHP进程管理,能够无缝与标准的请求、响应框架集成驱动。
RoadRunner
GO语言编写的PHP应用服务框架。
此类框架非常多,不多介绍了。
基于命令行的业务
确实很少有人这么做,很少有人研发在命令行下的项目,倘若有这种需要,通常是运用ThinkPHP、laravel等框架供给的自定义命令去实现了。但不表率PHP无这方面的成熟的框架。
[minicli/minicli]极简的命令行框架
一个PHP的极简的无依赖的命令行类库.能够非常方便的结构化的程序逻辑和美丽的输出.
[psy/psysh]一个PHP的实时交互掌控台
PsySH是一个实时运行的交互的命令行项目。
[league/climate]一个PHP功能健全的命令行功能操作库
一个事实上的PHP标准的命令行框架。
SeverLess服务
可能有些PHP没接触过这个概念,大体的意思是,不消自己安排运维服务器了,只要把代码上传到severless的服务上就可,按计算扣积分。基本都是各大服务器厂家供给的服务。其中laravel对其有很好的支持,其他亦有有些框架能够很容易的实现。例如Bref,简单且可扩展的服务框架。
总结
因此总的来讲,PHP有各样的方式,对应区别的业务场景。
其他还有有些特别有意思的项目,例如: KPHP,把PHP编译成C++代码。peachpie,把PHP便以为.NET平台程序PHP-JS,集成Node引擎的PHP扩展PHP-CPP,运用C++研发PHP扩展,代码很容易上手这些项目在我的另一篇文案有介绍:
《PHP的几个有趣的打开方式:从基本到变态》https://phpreturn.com/index/a623dc0357dead.html
其他
近期又出了几个PHP代码“编译”功能的项目,重点的目并不是性能,而是源码守护,ulthon_admin的有个分支正在做这件事,还无正式发布,另一一个国人研发的项目,亦没正式上线,总体思路亦是这个,等以后仔细为大众介绍介绍。
原文标题:PHP 的运行方式有那些?
原文位置:https://phpreturn.com/index/a640bdfa37386b.html
原文平台:PHP武器库
版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站准许任何形式的转载/引用文案,但必须同期注明出处。
|