13919049954

Google AppEngine 适合托管 PHP 应用么?

作者:金城在线 日期:2018/2/28 10:39:37 人气:319

你也许想知道,AppEngine 是否真的对 PHP 网站支持的很好。


现在,GAE 将官方的 PHP-5.4 定制和整合到 Google 云平台。很多常用的扩展已经编译进去,当然,不是所有。


这当然是一个有约束的环境,所以你别指望所有 PHP 特性都能用上。GAE 环境和常规环境会存在一些差异,有利的和不利的都有。


还没有人把真正的使用报告给出来,差异肯定比我们想象的要多,我们可以先从官方文档中观察出一些差异。


有利的:


1、几乎无穷的扩张能力


如果你的站点出现了一个请求的高峰,理论上 AppEngine 会处理这些负载。如果是常规环境下,你就需要小心地添加一些服务器并且分发那些请求到这些服务器上。


2、自动备份


AppEngine 会自动备份你的应用和数据库,你也可以按需要定制备份计划。


3、分布式的 session


AppEngine 模拟了一个 memcached 服务,不管你的应用代码在不在同一台机器,你都可以存取数据。


通过这样来存取 session 数据,比 PHP 原生的本地文件的实现方式要好多了。


4、任务队列


AppEngine 提供了队列接口,你可以将脚本的执行延迟到后端进程。为了方便队列的使用,官方已经提供封装好的类库。


你还可以安排任务的执行时间表,就像使用 crontab 一样。


(译者注:任务队列确实是普通虚拟主机提供商不能提供的东东,嗯,还有 memcached 服务。备份还好说,无穷的扩展能力,一般小站还不奢望能用上。)


不利的:


1、没有本地文件系统可以用了


很多 PHP 应用都是可以读写自己的文件的,比如配置文件、用户上传的文件。这些数据现在都是通过特殊的文件流句柄写到云存储服务中了。


你就不能用 require 或 include 去执行动态创建的文件了。虽然看起来,这提高了安全性,但也给很多 PHP 应用强加了限制。


举个栗子,很多 PHP 应用都用到模板引擎,模板引擎的实现就是将模板文件解析为可执行的 PHP 文件,在显示页面时 include 这些解析好的 PHP 文件。所以很多模板引擎就不能用了。还有,类似 Wordpress 自动升级的功能也就跑不起来了。


解决方案似乎也有,把云存储上的文件读取下来,然后赋值给变量,然后用 eval 去执行。当然,很多应用根本还不会这样工作。


(译者注:eval 这种方式太不可取了,可以先放一边。没有本地文件系统确实是硬伤,模板引擎也只能用那些不产生中间文件的。很少有应用是不读写本地文件的,所以要上 AppEngine 的应用都避免不了调整)


2、没有远程资源获取途径(如:sockets、Curl)


至少现在看起来,是不能用 fsockopen 或 Curl 扩展去建立 socket 连接的。


如果要连接到远程站点,你得用 fopen、file_get_contents 等类似函数。


(译者注:这样搞起来,很多远程连接的类库也不能用了,是出于什么目的要禁用这些函数和扩展呢?)


3、URL 由 AppEngine 的配置来映射了,而非 mod_rewrite


因为 AppEngine 运行在 Google 的 Web 服务器上,mod_rewrite 这样的扩展肯定不能用了。


URL 和 PHP 脚本的映射是由特定格式的配置文件管理的,得学。


(译者注:配置文件格式和语法如果和 rewrite 的语法类似,问题倒不大)


4、没有 PHP 错误日志了


至少现在看起来,是没有 PHP 错误日志的入口的。意味着,如果生产环境的 PHP 代码出错了,你会看不到它们。


            金城在线专注网站、软件、APP、微信公众平台、小程序、抖音、头条等开发推广,如果您有这方面的需求或者不同的观点,欢迎联系交流。

    官方微信

    本文网址:http://www.lz.net.cn/zixunzhongxin/748.html
    读完这篇文章后,您心情如何?
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    更多>>网友评论
    发表评论