天涯论坛

 找回密码
 立即注册
搜索
查看: 14|回复: 2

PHP 的运行方式有哪些?

[复制链接]

3028

主题

210

回帖

9777万

积分

论坛元老

Rank: 8Rank: 8

积分
97779018
发表于 2024-10-5 03:54:08 | 显示全部楼层 |阅读模式

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武器库)所有,本站准许任何形式的转载/引用文案,但必须同期注明出处。





上一篇:命运2没法打开,没法运行,没法起步的处理之道
下一篇:扣丁学堂PHP培训常用的PHP工具
回复

使用道具 举报

3070

主题

3万

回帖

9915万

积分

论坛元老

Rank: 8Rank: 8

积分
99158931
发表于 2024-10-30 03:01:00 | 显示全部楼层
“板凳”(第三个回帖的人)‌
回复

使用道具 举报

3047

主题

3万

回帖

9606万

积分

论坛元老

Rank: 8Rank: 8

积分
96065852
发表于 2024-11-2 04:33:46 | 显示全部楼层
楼主果然英明!不得不赞美你一下!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|天涯论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-23 04:52 , Processed in 0.103154 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.