首页 » SEO优化 » phppsr7技巧_各位 PHPerServerless 正当时

phppsr7技巧_各位 PHPerServerless 正当时

访客 2024-11-09 0

扫一扫用手机浏览

文章目录 [+]

PHP 的运用范围相称广泛,尤其是在网页程序的开拓上, 根据最新 维基百科 显示,2013 年 4 月的统计资料,PHP 已经被安装在超过 2 亿 4400 万个网站和 210万 台做事器上。
而根据 W3Techs 的报告,截至 2021 年 9 月, 有 78.9% 的网站利用 PHP。
以是 PHP 是天下第一措辞至少在 Web 开拓领域并不是戏称。

而在技能选型上, PHP 紧张采取的是 LAMP(全称是linux + apache + mysql + php) 或者 LNMP (全称是 linux + nginx + mysql + php), 这种成熟稳定的技能框架推动 PHP web 开拓生态的繁荣和商业上的成功。

phppsr7技巧_各位 PHPerServerless 正当时

在传统的开拓模式中, 开拓者自己须要安装掩护各种软件的安装、掩护升级:

phppsr7技巧_各位 PHPerServerless 正当时
(图片来自网络侵删)

1、如果您是一个企业用户, 如果业务体量变大或者为了生产环境的稳定和可用性, 利用负载均衡是一个一定的选项:

即此时, PHP 开拓者或者线上运维的同学关心的事情多了起来:

每个增加的生产机器都须要重新安装一遍干系软件, 做相同的 nginx 配置以及 php-fpm 的配置, 以及掩护每个生产机器的安全更新 如果开拓的运用须要一个新的扩展, 可能须要人肉每台机器去增加扩展负载均衡器随着业务的变更升配, 后面一台 Worker 机器挂掉了, 如何做运维处理业务的波峰波谷怎么应对才能让资源的利用率提高...

2、如果您是项目组开拓成员比较多的企业用户,能不能不须要给每个人配置一个安装的 NLP 的 Linux 机器作为开拓测试机器(或者多人共享一个机器)?

3、如果您是一个学生或者准备学习 PHP 开拓,本地只有 Windows 电脑, 能不能直靠近乎免费的办法获取 LNP(Linux+Nginx+PHP) 的环境用来学习呢?

带着这些问题, 我们去探索一下 Serverless 是如何办理这些痛点的。

PHP 遇见 Serverless

1、什么是 Serverless

Serverless = Faas (Function as a service) + Baas (Backend as a service), 我们大略通过两个图快速理解干系观点:

1)传统模式

2)Serverless 模式

图中的 1,2 便是第三方 BaaS 做事, 4,5 便是自定义函数逻辑的 FaaS, 通过这个比拟, 我们能快速得到 FaaS 的特性和好处:

只须要专注业务代码开拓, 编写对应的逻辑即可 极致弹性伸缩, 无需管理做事器 按量付费,每次调用按毫秒计费 ...

本文后续谈论的 Serverless 紧张指的是 FaaS, 如下示意图, 几行代码编写完毕, 保存到云厂商的 FaaS 平台, 就完成了一个弹性高可用的 Web API。

2、PHP 遇见 Serverless

在讲 PHP 之前, 我们可以先看看 Serverless 在前端领域风起云涌的发展:

1)Backend For Frontend(BFF)in Serverless来提高生产力

前端开拓者全栈化提高开拓效率,减少前端和后端接口同学的沟通联调韶光, 后端同学只须要做好原子的接口的稳定性和可靠性即可, 数据的聚合直接由前端同学通过 BFF 实现。

2)当 SSR 遇上 Serverless,轻松实现页面瞬开

借助于函数即做事(FaaS)的能力,不须要再去搭建传统的 Node 运用,一个函数就可以变成一个做事,开拓者可以更纯粹的关注于业务逻辑。
FaaS 以函数为单位的形式以及弹性机制,为 SSR 运用带来了天然的隔离性和动态修复能力,可以更好的避免页面间的交叉污染,或一些边界的非常场景对运用带来致命性的侵害。
无需运维、按需实行、弹性伸缩这些特性,大大降落了 SSR 运用对开拓者的门槛。

PHP 作为一个开拓群体的很大的措辞, 各大云厂商的 FaaS(比如阿里云的函数打算, AWS 的 Lambda, 腾讯的 SCF 等)都推出了对 PHP 措辞的支持, phper 面对前端领域的 Serverless 技能改造实践, 该当不遑多让。
以阿里云函数打算为例, 有很多 PHP 的开拓者有了很多有趣的实践:

直策应用 gd 或者 ImageMagick 扩展, 实现弹性高可用的图片、水印等各种 CPU 密集型 API直策应用 ffmpeg + 性能型实例 + 异步有状态调用完成视频剪辑合成等音视频处理业务利用 HTTP 触发器实现的函数, 埋点到广告平台, 快速实现高可用的买量业务直接将之前基于框架(如 ThinkPHP)实现的 web API 直接迁移到 FaaS 平台,不用再担心宕机和运维问题了 ...

虽然 FaaS 很好地办理了 phper 如下问题:

新业务或者开拓新的 web API 存量业务中, 有些 CPU 密集型或者弹性哀求很高的 API 单独抽离出来 FaaS 化

但是传统的开拓模式或者存量业务,对开拓者有一定的上手和改造本钱,比如某 Faas 厂商 PHP Runtime 编程接口示例:

<?php

function handler($event, $context) {

$eventObj = json_decode($event, $assoc = true);

// do your thhings

// ....

return $eventObj['key'];

}

<?php

use RingCentral\Psr7\Response;

function handler($request, $context): Response {

/

$body = $request->getBody()->getContents();

$queries = $request->getQueryParams();

$method = $request->getMethod();

$headers = $request->getHeaders();

$path = $request->getAttribute("path");

/

return new Response(

200,

array(

"custom_header1" => "v1",

"custom_header2" => ["v2", "v3"],

"Set-Cookie" => urlencode("test php") . '=' . urlencode('test;more')

),

"hello world"

);

}

但是能不能更进一步, 开拓者不须要按照 FaaS 厂商的约定的函数入口能实现一个一个的 API, 而是能直接将传统运行在 LAMP 或者 LNMP 的项目直接 FaaS 化?

答案是肯定的。

阿里云函数打算的 Custom Runtime 以及直接基于 HTTP 协议的极简编程模型走在了所有厂商的前列。

函数打算启动Custom Runtime实行环境时,会默认调用bootstrap文件启动您自定义的HTTP Server。
然后这个HTTP Server接管了函数打算系统的所有要求,即您所有的函数调用要求。

(函数打算 Custom runtime 实行环境底层系统是 linux, 并且已经内置的 nginx 和 php-fpm7.4, 对付 PHP 运用,您直策应用即可)

以支配一个 wordpress 项目 为例, 只须要将如下目录直接打包成一个 zip 包在函数打算平台创建一个函数即可:

- bootstrap

- nginx.conf

- php-fpm.conf

- php.ini-production

- wordpress

个中 wordpress 目录是对应的 web 工程, bootstrap 是启动 nginx 和 php-fpm 的脚本即可:

...

echo "start php-fpm"

php-fpm7.4 -c /code/php.ini-production -y /code/php-fpm.conf

echo "start nginx"

nginx -c /code/nginx.conf

...

(bootstrap 详情可参考 WordPress in FC)

以是, 利用函数打算这个 Serverless 产品和传统的 PHP 开拓相结合后, 您再也不用考虑负载均衡的事情, 不用考虑扩缩容的事情, 不用管理机器、不用担心宕机的事情等等, 只须要安安心心把业务代码开拓好即可。

从上图可以看出:开拓者只须要开拓好自己的业务代码即可,唯一须要考虑的事情, 便是函数打算这边扩容不要太多太猛(比如直接在函数打算平台设置下该函数能弹出的最大实例数目即可), 给下贱自己的 Mysql 数据库过大的压力即可。

当然, 从原始的传统的 php web 运用完备迁移到 Serverless 形态或者容器形态的云产品中, 可能还会有这样的问题, 以 WordPress 为例, 之前后台系统上传的图片或者利用 Session 功能, 都是直接保存到磁盘的, 函数打算弹出的实例, 可能会永劫光没有调用会被回收, 但是我想要有磁盘的持久化功能,这个时候, 流程图如下:

(函数打算只须要大略配置下即实现 VPC 的网络安全打通和 NAS 挂载)

设置 web 工程的文件上传目录或者 session 目录为 NAS 盘的某个目录, NAS 盘实现持久化乃至可以将 web 工程直接放到 NAS 盘上, 此时函数打算纯粹便是 LNP 实行环境

比如将 wordpress 工程不作为函数的代码包的一部分, 而已提前上传到 NAS 盘, 只须要设置好 nginx.conf 中的 root 能知道 web 工程即可, 如上面的 nginx.conf, /mnt/auto 表示挂载的 NAS 目录,mnt/auto/wordpress 则表示在 NAS 上的 web 工程。

此时对您来说, 函数再也不用变了, 您可能只是须要开拓新的业务代码, 然后上传到 NAS 上即可(或者直策应用 git 直接在 NAS 操作,实现 web 工程的版本和 git 上的 commit 绑定, 利用 git 实当代码的快速升级和混滚)。

但是从安全生产的角度来说, 还是建议您 web 工程变更最好和函数的变更干系联。

小结

从上面的谈论和陈述中, 我们不难创造, PHP 遇见 Serverless 是一件令人愉快的事情, 让 phper 有了更大的想象空间。
Serverless 的理念和 PHP 这个措辞涌现的理念也是同等的: 即让开发者最大精力集中在自己的业务代价。
PHP 措辞一贯是 web 领域最好的生产力代表, 而 Serverless 将会让 PHP 为虎傅翼。

我们末了来逐一解答下序言中提出的问题:

1、如果您是一个企业用户, 业务体量变大或者为了生产环境的稳定和可用性, 如何做?

如上面陈述, 利用函数打算和传统的 PHP 开拓相结合后, 您再也不用考虑负载均衡的事情, 不用考虑扩缩容的事情, 不用管理机器、担心宕机的事情等等, 只须要安安心心把业务代码开拓好即可。

2、如果您是项目组开拓成员比较多的企业用户,能不能不须要给每个人配置一个安装的 NLP 的 Linux 机器作为开拓测试机器(或者多人共享一个机器)?

是的, 每个开拓者在函数打算上创建一个自己的 Service/函数即可, Service/函数配置开拓测试环境的 VPC,实现内网安全访问数据库等其他下贱做事。
函数调用的时候, 函数打算会拉一个 NLP 的实行环境来运行您分支上正在开拓的 PHP 代码。

每个实行环境是相互隔离的按调用次数计费, 不须要预留机器, 免除了机器本钱上的摧残浪费蹂躏也可以很方便进行压测等各种事宜

3、如果您是一个学生或者准备学习 PHP 开拓,本地只有 Windows 电脑, 能不能直靠近乎免费的办法获取 LNP(Linux+Nginx+PHP) 的环境用来学习呢?

是的, 只要将如下的文件和文件夹打包成 zip 包去函数打算掌握台创建函数即可

- bootstrap

- nginx.conf

- php-fpm.conf

- php.ini-production

- myweb

| - hello.php

原文链接:301 Moved Permanently

本文为阿里云原创内容,未经许可不得转载。

标签:

相关文章

QQ聊天恶搞代码技术背后的趣味与风险

人们的生活越来越离不开社交软件。在我国,QQ作为一款历史悠久、用户众多的社交平台,深受广大网民喜爱。在QQ聊天的过程中,恶搞代码的...

SEO优化 2025-03-02 阅读1 评论0

Python代码截屏技术与应用的完美融合

计算机屏幕截图已经成为人们日常生活中不可或缺的一部分。无论是分享工作成果、记录游戏瞬间,还是保存网页信息,屏幕截图都发挥着重要作用...

SEO优化 2025-03-02 阅读1 评论0

QQ无限刷礼物代码技术突破还是道德沦丧

社交平台逐渐成为人们生活中不可或缺的一部分。QQ作为我国最具影响力的社交软件之一,其丰富的功能吸引了大量用户。近期有关QQ无限刷礼...

SEO优化 2025-03-02 阅读1 评论0