服务与支持 |咨询热线 0931-8733767
  • 金城在线
  • 公司简介
  • 发展历程
  • 企业文化
  • 售后服务
  • 工作机会
  • 联系我们

Google AppEngine 适合托管 PHP 应用么?

来源:发布时间:2018-2-28 10:39:37

你也许想知道,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 代码出错了,你会看不到它们。


相关文章
  • 预约专家

    为您提供一对一解决方案
    立即预约
  • 售前咨询

    周一至周五9:00——17:30
    立即咨询
  • 联系方式

    13919049954

    全国7×24小时热线服务
  • 免费报价

    专属专业顾问1对1报价
    免费报价