<?php function sae_write($file,$content){ file_put_contents(SAE_TMP_PATH."/".$file,$content); } function sae_read($file){ return file_get_contents(SAE_TMP_PATH."/".$file); } ?> <?php sae_write("1.txt","test"); $rs=sae_read("1.txt"); print_r($rs); ?>
当处理上传图片时,原图被POST上来之后,可直接 move_uploaded_file 到 Storage 下。
而当需要对上传上来的图片添加水印时,一般是先处理该图然后保存到支持临时读写的TmpFS下,再把这个文件写入到Storage中,但是这时不能够再使用 move_uploaded_file (bool move_uploaded_file( string $filename, string $destination) )函数了,因为如果 $filename 非通过 HTTP 的 HTTP POST 上传时,视为该 $filename 非法,函数将不执行任何操作返回 flase。
可简单有以下语句完成:
file_put_contents($filaname, file_get_contents($tmpfile));
================
TmpFS
因为平台安全性的考虑,SAE限制了用户对于本地IO的使用,但这样对于一些传统的PHP项目,也许带来了很多不便,因为它们都或多或少的有对本地IO的操作,像Smarty的编译模板。为了解决这个问题,SAE提供了TmpFS功能。TmpFS允许开发者通过标准的IO函数临时读写本地IO,这样方便了很多非SAE项目的移植。
特别注意:
临时文件的生存周期等同于PHP请求,也就是当该PHP请求完成执行时,所有写入TmpFS的临时文件都会被销毁
TmpFS是本地临时文件,不是共享存储,而SAE是全分布式环境,所以不同请求之间无法通过TmpFS共享操作文件
TmpFS操作的文件限于SAE_TMP_PATH目录内,而不同App的SAE_TMP_PATH是不同的
TmpFS的文件为纯内存存储
应用场景
用户的可持久化存储,请使用Storage或者MySQL存储,而缓存存储请使用Memcache服务存储,TmpFS是满足用户的一个请求的临时文件的读写需求。比如抓取一个URL的图片,判断一下大小,再决定是否写入Storage。需要在本地生成文件的情况大致分以下几种:
缓存
配置文件
静态文件
临时文件
使用指南
例子:
appname: saetest
appversion: 1
在一个php文件中:
file_put_contents( SAE_TMP_PATH . ‘/mycode.txt‘ , ‘dummy test‘ ); echo file_get_contents( SAE_TMP_PATH . ‘/mycode.txt‘ ); // will echo dummy test;
如果是两个独立的php文件:
a.php file_put_contents( SAE_TMP_PATH . ‘/mycode.txt‘ , ‘dummy test‘ ); b.php echo file_get_contents( SAE_TMP_PATH . ‘/mycode.txt‘ ); // 出错啦,文件已经不存在了...
说到这里,大家应该明白,用它做缓存不但不会带来性能提升,反而会带来额外的开销。