PHP 和 Serverless 的结合, 大家怎么看 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xiliu
V2EX    PHP

PHP 和 Serverless 的结合, 大家怎么看

  •  
  •   xiliu 2022-04-21 16:57:19 +08:00 2795 次点击
    这是一个创建于 1268 天前的主题,其中的信息可能已经有所发展或是发生改变。

    PHP + Serverless

    有个系列文章,传统的 PHP 应用可以一键迁移到 Serverless 平台, 没有了机器的概念, 按请求次数收费, 弹性高可用。

    16 条回复    2022-04-25 22:36:21 +08:00
    chenzheyu
        1
    chenzheyu  
       2022-04-21 17:04:47 +08:00
    如果是原生的 php 写的很恶心啊,但是如果运行环境是 laravel 那种重框架也不好实现
    Mitt
        2
    Mitt  
       2022-04-21 17:14:16 +08:00
    传统应用一键迁移是不太可能的,不去做适配就是一大堆问题
    sujin190
        3
    sujin190  
       2022-04-21 17:22:52 +08:00
    似乎现在 Serverless 基本都是临时创建容器,真 php 传统应用的话,这个默认的用本地文件保存 session 就够麻烦的,不过挂载一个 oss 的文件系统估计也不麻烦
    garlics
        4
    garlics  
       2022-04-21 17:23:50 +08:00
    之前研究过,感觉 php 的 serverless 是通过 php 内置的 Web Server 实现的,而这个内置的 Web Server 写了不推荐在生产上使用,所以我就没用了。
    lshero
        5
    lshero  
       2022-04-21 17:26:16 +08:00
    不保留一个容器有冷启动的问题,保留了容器后就有机器的概念了。
    配合消息队列做一些小的脚本任务还可以吧
    markgor
        6
    markgor  
       2022-04-21 17:45:34 +08:00
    没那么麻烦吧....
    腾讯云的 Serverless 已经支持 PHP 的 laravel 框架了。
    另外都 Serverless 了,token 才是最优吧,session 的话也可以通过配置 redis 来存储.....
    akagishigeru
        7
    akagishigeru  
       2022-04-21 20:56:51 +08:00 via iPhone
    Laravel 在 aws 可以 serverless ,虽然我不太懂
    whileFalse
        8
    whileFalse  
       2022-04-22 10:12:24 +08:00 via iPhone
    @lshero 保留容器的情况下容器是可以替换的呦
    xiliu
        9
    xiliu  
    OP
       2022-04-22 11:21:41 +08:00
    @Mitt 能具体说说吗? 主要适配是啥?我个人理解 serverless 形态 + NAS 盘, 跟传统的单机没有太大区别
    xiliu
        10
    xiliu  
    OP
       2022-04-22 11:23:19 +08:00
    @markgor 如果单独新开发一个业务逻辑, 或者从存量业务中抽出一部分逻辑, 确实可以直接使用云厂商提供的 PHP runtime 直接搞一个函数就完事了
    xiliu
        11
    xiliu  
    OP
       2022-04-22 11:28:10 +08:00
    @lshero 对, 如果是是小业务, 可以搞一个定时器函数,1 min 主动调用一次(肯定在免费额度内), 至少可以保活一个实例; 如果真的是业务流量大的话, 可以直接考虑预留一些实例了, 至于费用的话, 好像有的云厂商, 已经有比较好的计费策略了。

    计费方式:关闭始终分配 CPU 开关后,当实例处于闲置状态时,CPU 将被冻结,此时您只需按照闲置实例资源单价支付使用成本,闲置实例资源使用单价是活跃实例资源使用单价的 20%,这将帮助您节省大量的成本。

    https://help.aliyun.com/document_detail/185038.html
    INCerry
        12
    INCerry  
       2022-04-22 11:28:33 +08:00
    ServerLess 比较关注冷启动的速度和程序本身运行速度,毕竟都是按毫秒计费的,对 PHP 不熟悉 PHP 有 AOT 编译之类的功能吗?
    xiliu
        13
    xiliu  
    OP
       2022-04-22 11:30:04 +08:00
    @garlics 是 nginx+php-fpm, 你可以尝试体验下, 这个 zblog 项目: https://github.com/devsapp/start-web-framework/tree/master/web-framework/php/zblog/src
    xiliu
        14
    xiliu  
    OP
       2022-04-22 11:37:08 +08:00
    @INCerry 如果使用 nginx+php-fpm 这种模式驱动传统框架的, 冷启动时间是会大点, 这个主要时间主要是进程启动时间比较长, 虽然可以加大内存(对应增大 cpu )可以缓解。 可以采用预留或者保活去规避冷启动

    但是如果不采用传统模式驱动, 比如 https://github.com/devsapp/start-web-framework/tree/master/web-framework/php/thinkphp/src 这个 thinkphp 的例子, 直接 cli 单线程启动,一个实例 128M , 请多多了, 我可以快速弹出新的 128M 实例来响应请求啊。 把一个实例直接看成是一个 php-fpm 的 work 进程, 弹性高可用!
    xiliu
        15
    xiliu  
    OP
       2022-04-22 11:38:20 +08:00
    @sujin190 可以直接挂载 NAS , 跟本地磁盘一样的体验, 这个文章 https://docs.serverless-devs.com/blog/php/PHP%E9%81%87%E8%A7%81Serverless 比较深入探讨了这个问题
    ywisax
        16
    ywisax  
       2022-04-25 22:36:21 +08:00
    Serverless 的确挺适合 php
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     6051 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 02:37 PVG 10:37 LAX 19:37 JFK 22:37
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86