广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP和Serverless有什么关系
  • 765
分享到

PHP和Serverless有什么关系

2023-06-26 06:06:41 765人浏览 泡泡鱼
摘要

本文小编为大家详细介绍“PHP和serverless有什么关系”,内容详细,步骤清晰,细节处理妥当,希望这篇“php和Serverless有什么关系”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。前言PHP 的应用

本文小编为大家详细介绍“PHPserverless有什么关系”,内容详细,步骤清晰,细节处理妥当,希望这篇“php和Serverless有什么关系”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

前言

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 开发生态的繁荣和商业上的成功。

PHP和Serverless有什么关系

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

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

PHP和Serverless有什么关系

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

  • 每个增加的生产机器都需要重新安装一遍相关软件, 做相同的 nginx 配置以及 php-fpm 的配置, 以及维护每个生产机器的安全更新

  • 假如开发的应用需要一个新的扩展, 可能需要人肉每台机器去增加扩展

  • 负载均衡器随着业务的变更升配, 后面一台 Worker 机器挂掉了, 如何做运维处理

  • 业务的波峰波谷怎么应对才能让资源的利用率提高

  • ...

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

  • 如果您是一个提供网站开发和托管的 ISV 、外包公司或者创业公司, 我的客户都是一些中小企业的门户网站, 我怎么提高我后端机器资源利用率以及更好提供定制化服务?

  • 如果您是一个学生或者准备学习 PHP 开发,本地只有 windows 电脑, 能不能直接近乎免费的方式获取 LNP(Linux+Nginx+PHP)  的环境用来学习呢?

  • ...

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

PHP 遇见 Serverless

什么是 Serverless?

Serverless = Faas (Function as a service) + Baas (Backend as a service), 我们简单通过两个图快速了解相关概念:

  • 传统模式

PHP和Serverless有什么关系

  • Serverless 模式

PHP和Serverless有什么关系

图中的 CDN 和 OSS 就是 BaaS 服务,FC 就是自定义函数逻辑的 FaaS 平台,   通过这个对比, 我们能快速得到 FaaS 的特性和好处:

  • 只需要专注业务代码开发, 编写对应的逻辑即可

  • 极致弹性伸缩, 无需管理服务器

  • 按量付费,每次调用按毫秒计费

  • ...

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

PHP和Serverless有什么关系

PHP 遇见 Serverless

PHP 作为一个开发群体的很大的语言, 各大云厂商的 FaaS,比如阿里云的函数计算、AWS 的 Lambda (通过 Custom Runtime 间接支持)、 腾讯的 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 编程接口示例:

function handler($event, $context) {     $eventObj = JSON_decode($event, $assoc = true);    // do your thhings     // ....     return $eventObj['key'];}

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

答案是肯定的

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

PHP和Serverless有什么关系

函数计算启动Custom Runtime执行环境时,会默认调用 bootstrap文件(或者您创建函数的时设置的 Args参数)启动您自定义的 HTTP Server, 然后这个HTTP Server接管了函数计算系统的所有请求,即您所有的函数调用请求。

函数计算 Custom runtime 执行环境底层系统是 Linux,  并且已经内置的 nginx/1.10.3 和 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.confecho "start nginx"nginx -c /code/nginx.conf...

bootstrap 详情可参考 WordPress in FC

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

PHP和Serverless有什么关系

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

当然, 从原始的传统的 php web 应用完全迁移到 Serverless 形态的函数计算平台, 某些场景可能需要考虑数据持久化问题, 因为函数计算是无状态的, 数据持久化保存可以借助 NAS、Redis 等服务完成,以 NAS 为例,流程图如下:

PHP和Serverless有什么关系

以 WordPress 为例, 后台系统上传的图片或者 Session 功能都是需要持久化到磁盘的。

  • 设置 web 工程的文件上传目录或者 session 目录为 NAS 盘的某个目录, NAS 盘实现持久化

  • 甚至可以将 web 工程直接放到 NAS 盘上, 此时函数计算纯粹就是 LNP 执行环境

PHP和Serverless有什么关系

比如将 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 如虎添翼。

我们最后来一一解答下前言中提出的问题:

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

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

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

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

  • 每个执行环境是相互隔离的

  • 按调用次数计费, 不需要预留机器, 免除了机器成本上的浪费

  • 也可以很方便进行压测等各种事宜

如果您是一个提供网站开发和托管的 ISV 、外包公司或者创业公司, 我的客户都是一些中小企业的门户网站, 我怎么提高我后端机器资源利用率以及更好提供定制化服务?

通常来说, 很多企业门户网站访问量不大, 但是网站挂掉了会引起客户投诉。每个客户的网站通过service 或者函数区分, 通过函数名或者service去区分您自己的客户: i. 管理方便  ii. 做定制化方便  iii. 做不同vip等级服务方便。 举个例子, 您可以快速通过某个函数的调用指标情况, 可以看出哪个客户的网站访问量大,可以做出客户画像以及制定不同的收费和 vip 服务级别。

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

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

- bootstrap- nginx.conf- php-fpm.conf- php.ini-production- myweb  | - hello.php

读到这里,这篇“PHP和Serverless有什么关系”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网PHP编程频道。

--结束END--

本文标题: PHP和Serverless有什么关系

本文链接: https://www.lsjlt.com/news/307374.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP和Serverless有什么关系
    本文小编为大家详细介绍“PHP和Serverless有什么关系”,内容详细,步骤清晰,细节处理妥当,希望这篇“PHP和Serverless有什么关系”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。前言PHP 的应用...
    99+
    2023-06-26
  • laravel和php之间有什么关系
    这篇文章主要为大家展示了“laravel和php之间有什么关系”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“laravel和php之间有什么关系”这篇文章吧。php是一种脚本语言,而larave...
    99+
    2023-06-29
  • laravel和php是什么关系
    本教程操作环境:windows7系统、Laravel6&&PHP7.1版、Dell G3电脑。Laravel 是 Taylor Otwell 开发的一款基于 PHP 语言的 Web 开源框架,采用了 MVC 的架构模式。它可...
    99+
    2019-08-07
    laravel php
  • Flex和Flash有什么关系
    这篇文章主要介绍了Flex和Flash有什么关系,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。AdobeFlex简介Flex通常是指AdobeFlex,是最初由Macrome...
    99+
    2023-06-17
  • html和html5有什么关系
    这期内容当中小编将会给大家带来有关html和html5有什么关系,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。html是一种标记语言,而html5是对HTML标准的第五次...
    99+
    2022-10-19
  • ubuntu和linux有什么关系
    ubuntu和linux的关系:严格来说,linux并不是操作系统,而是一个操作系统的内核,而ubuntu则是基于linux内核的桌面PC操作系统,属于 debian系列的一个分支,也是linux大家庭中的一员。...
    99+
    2022-10-20
  • spyder和python有什么关系
    这篇文章主要介绍了spyder和python有什么关系,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。spyder和python的关系:1、Spyder是Python的一个简单...
    99+
    2023-06-06
  • js和vue有什么关系
    这篇文章主要为大家展示了js和vue有什么关系,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“js和vue有什么关系”这篇文章吧。为什么要使用VueVue是一款友好的、多用途且高性能的JavaScr...
    99+
    2023-06-06
  • SDK、API和app有什么关系和联系
    这篇文章主要介绍了SDK、API和app有什么关系和联系的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SDK、API和app有什么关系和联系文章都会有所收获,下面我们一起来看看吧。SDK(Software&nb...
    99+
    2023-06-05
  • java和javascript有什么关系吗
    本篇内容主要讲解“java和javascript有什么关系吗”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java和javascript有什么关系吗”吧! ...
    99+
    2022-10-19
  • php和thinkphp指的是什么关系
    这篇文章给大家分享的是有关php和thinkphp指的是什么关系的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。PHP是在服务器端执行的脚本语言,而thinkphp是一个面向对象的轻量级PHP开发框架,是基于php...
    99+
    2023-06-22
  • PHP中的HTTP负载和shell脚本有什么关系?
    在Web开发中,HTTP负载指的是客户端与服务器之间的数据传输量,而shell脚本则是一种脚本语言,可以用来执行各种系统操作。这两者看似毫不相关,但实际上在PHP中,它们有着密切的联系。 PHP是一种服务器端脚本语言,可以用来生成动态网页...
    99+
    2023-09-30
    http load shell
  • PHP 和 Numpy 有什么联系?探究二者的关联
    PHP 和 Numpy 都是在不同领域中使用的编程语言,分别用于 Web 开发和科学计算。尽管它们之间存在着明显的差异,但是它们也有一些相同点。在本文中,我们将探究 PHP 和 Numpy 的关联,以及它们如何在不同领域中发挥作用。 PH...
    99+
    2023-09-14
    leetcode numpy api
  • Java和Git有什么关系?框架和响应又有什么联系?
    Java是一种广泛使用的编程语言,而Git是一种版本控制系统。虽然它们看起来没有什么关系,但它们实际上是密切相关的,因为Git可以与Java一起使用来管理和维护Java代码。 Git的工作原理是将代码存储在称为“仓库”的中心位置。Java...
    99+
    2023-06-17
    git 框架 响应
  • jsp和javascript之间有什么关系
    本篇内容主要讲解“jsp和javascript之间有什么关系”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“jsp和javascript之间有什么关系”吧! ...
    99+
    2022-10-19
  • 聊聊Git和GitHub有什么关系?
    在软件开发领域,Git与GitHub是两个重要的概念。虽然它们从根本上具有不同的含义,但它们之间有许多相关性。首先,Git是一种分布式版本控制系统,可以在本地计算机上管理和追踪代码的版本。Git通过记录每个文件的更改历史和元数据,使开发者可...
    99+
    2023-10-22
  • 云计算和Linux有什么关系
    这篇文章主要讲解了“云计算和Linux有什么关系”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“云计算和Linux有什么关系”吧!  云计算是一种可以使用互联网上可用的各种计算系统来支持各种互...
    99+
    2023-06-05
  • PHP中的索引对象和LeetCode算法有什么关系?
    PHP是一种广泛使用的服务器端脚本语言,它可以用于创建动态网页内容以及处理表单数据等。同时,LeetCode是一个在线编程学习网站,它提供了各种各样的算法题目,可以帮助程序员提高自己的编程能力。虽然这两者看起来没有什么关系,但实际上它们之...
    99+
    2023-09-01
    索引 对象 leetcode
  • 关系型和非关系型数据库有什么区别
    小编给大家分享一下关系型和非关系型数据库有什么区别,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!关系型数据库:Oracle、DB...
    99+
    2022-10-18
  • linux和ubuntu区别是什么?有什么关系?
      Ubuntu、Linux是什么它们之间如何区别对于很多人来说都有这样的疑惑,今天带着你的疑问跟着小编来看看吧。  Ubuntu:是一个以桌面应用为主的开源gnu、Linux操作系统,Ubuntu是基于DebianGNU/Linux,支持...
    99+
    2023-06-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作