ThinkPHP的SAE开发相关注意事项详解

2019-05-02 22:07:17王振洲

http://sae.sina.com.cn/?m=counter

如果你看到计算器名称为think_queue_out_times 的数值很大,说明你设置的队列个数太小,需要调整DB_SQL_BUILD_LENGTH 配置项。

文件上传

文件上传仍然使用UploadFile扩展类库上传文件,使用方法不变。同样的代码在本地运行时将会上传到指定的目录,在SAE上运行时就会自动使用Storage服务,将文件上传到指定的Storage中。首先你需要在SAE平台上创建一个Storage的domain用于存放上传的文件:

http://sae.sina.com.cn/?m=storage

这里可以建立多个domain。而我们的文件会上传到哪个domain,是由上传路径的第一个目录名称决定的。如:

$upload->savePath = './Public/Uploads/';

会上传到名为Public的domain。你也不用在这个domain下创建Uploads文件夹,SAE的Storage服务会为你自动创建。

图片地址的问题:

我们使用UploadFile类上传图片,在本地和在SAE下图片的浏览地址是不一样的。比如有张图片地址为 "/Public/upload/1.jpg" , /Public 是一个模板替换变量, 他会被替换为Public文件夹所在目录的地址, 我们可以通过浏览器的查看源代码功能查看被替换后是什么效果。 可以看见, 替换后为 "/Public/upload/1.jpg" 。 但是在SAE上图片并没有在Public/upload目录下,而是在storage中。 我们需要将 /Public/替换为storage的域名,在SAE上才能正常显示。

我们在SAE专有配置Conf/config_sae.php文件中 定义如下代码:

<?php
return array(
 'TMPL_PARSE_STRING'=>array(
   '/Public/upload'=>sae_storage_root('Public').'/upload'
 )
);

这样,在SAE上会把 /Public/upload 替换为storage的地址, 在SAE上图片也能正常显示。

文件删除问题:

因为上传的文件在本地和SAE存放的地方不一样,所以我们不能直接用unlink删除文件。SAE版ThinkPHP新增sae_unlink函数实现兼容。如:

sae_unlink('./Public/Uploads/xxx.jpg');

在本地运行时,会删除Public/Uploads文件夹下的图片。而在SAE上运行时,会删除domain为Public的Storage中的图片。此函数会删除哪个domian的文件也是由路径的第一个目录名称决定的。

图片处理

SAE引擎在图片处理方面也做了自动处理,在本地和SAE平台的区别如下:

图片功能 本地运行 SAE平台
缩略图 调用Image类库处理 自动使用SaeImage服务
验证码 调用Image类库处理 自动使用SaeVcode服务

你完全不用去学习怎么用SaeImage生成缩略图,也不用学习SaeVcode服务怎么用,你还是按照以前的方式使用ThinkPHP进行验证码和缩略图功能就可以了。

相关文章 大家在看