码迷,mamicode.com
首页 > 其他好文 > 详细

SAE临时文件读写例子 SAE_TMP_PATH

时间:2016-12-31 19:55:25      阅读:406      评论:0      收藏:0      [点我收藏+]

标签:语句   提升   post   php   tin   传统   读写   操作   上传   

 

<?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‘ ); // 出错啦,文件已经不存在了...  

说到这里,大家应该明白,用它做缓存不但不会带来性能提升,反而会带来额外的开销。

  

 

SAE临时文件读写例子 SAE_TMP_PATH

标签:语句   提升   post   php   tin   传统   读写   操作   上传   

原文地址:http://www.cnblogs.com/shaoing/p/6239983.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!