Google AppEngine 适合托管 PHP 应用么?

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

提供最优质的资源集合

立即查看 了解详情