首页 php教程 php手册 SAE平台的文件I/O处理

SAE平台的文件I/O处理

Jun 13, 2016 am 11:29 AM
处理 安全 平台 文件 朋友 用户 知道 考虑 限制

      用过SAE平台的朋友应该知道,出于平台安全性的考虑,SAE限制了用户对于本地IO的使用。但这样对于一些传统的PHP项目,也许带来了很多不便,因为它们都或多或少的有对本地IO的操作,像Smarty的编译模板。为了解决这个问题,SAE提供了TmpFS功能。TmpFS允许开发者通过标准的IO函数临时读写本地IO,这样方便了很多非SAE项目的移植。

        但是TmpFS是不够的,从名称来看是临时文件系统,它的生命周期同于PHP请求,也就是当该PHP请求完成执行时,所有写入TmpFS的临时文件都会被销毁。TmpFS是本地临时文件,不是共享存储,而SAE是全分布式环境,所以不同请求之间无法通过TmpFS共享操作文件,具体可参照SAE平台文档说明。

 示例:比如我想用TmpFS做个计数器(当然也可以用SAE提供的counter服务)

代码如下:

<strong><span  1</span> <?<span php
</span><span  2</span> <span $file</span>=SAE_TMP_PATH."/test.txt"<span ;
</span><span  3</span> <span if</span>(!<span file_exists</span>(<span $file</span><span )){
</span><span  4</span>     <span file_put_contents</span>(<span $file</span>,1<span );
</span><span  5</span>     <span echo</span> 1<span ;
</span><span  6</span> }<span else</span><span {
</span><span  7</span>     <span $n</span>=<span file_get_contents</span>(<span $file</span><span );
</span><span  8</span>     <span $n</span>++<span ;
</span><span  9</span>     <span echo</span> <span $n</span><span ;
</span><span 10</span>     <span file_put_contents</span>(<span $file</span>,<span $n</span><span );
</span><span 11</span> 
<span 12</span> <span }
</span><span 13</span> 
<span 14</span> 
<span 15</span> ?></strong>
登录后复制

发现根本进不了else里执行,因为临时文件系统随着每一次的执行结束就已经不存在了,所以每次代码开始时判断(又是一个新的php请求了),那个临时文件是不存在了.

就是说零时文件不能共享与两个文件或者一个文件的不同时间请求之间。

其实细读SAE文档,不难发现SAE提供的Wrappers里

KVDB -- saekv://

saekv://用来读写KVDB 主要用来保存持久存储的数据,最常用的场景是保存配置文件

这项可以满足我们对持久保存文件的创建修改要求

在使用这项服务前必须先才行。

下面是计数器的测试代码:

<strong><span  1</span> <?<span php
</span><span  2</span> <span $file</span>="saekv://count.txt"<span ;
</span><span  3</span> <span if</span>(!<span file_exists</span>(<span $file</span><span )){
</span><span  4</span> <span file_put_contents</span>(<span $file</span>,1<span );
</span><span  5</span>     <span echo</span> 1<span ;
</span><span  6</span> }<span else</span><span {
</span><span  7</span>     
<span  8</span> <span $n</span>=<span file_get_contents</span>(<span $file</span><span );
</span><span  9</span>     <span echo</span> <span $n</span><span ;
</span><span 10</span>     <span $n</span>++<span ;
</span><span 11</span>     <span file_put_contents</span>(<span $file</span>,<span $n</span><span );
</span><span 12</span>     
<span 13</span>     
<span 14</span> }</strong>
登录后复制

这样就可以了。

同时删除文件也有两种方式

一种就是php的原生删除方式unlink($file)就行

还有一种就是通过SAE提供的kvdb数据库删除方式:

代码:

<strong><span 1</span> <span $file</span>="saekv://count.txt"<span ;
</span><span 2</span> <span $kv</span>=<span new</span><span  SaeKV();
</span><span 3</span> <span $kv</span>-><span init();
</span><span 4</span> <span if</span>(<span $kv</span>->delete("count.txt"<span )){
</span><span 5</span> <span echo</span> "ok"<span ;
</span><span 6</span> }<span else</span><span {
</span><span 7</span> <span echo</span> "no"<span ;
</span><span 8</span> }</strong>
登录后复制

详情参见KVDB服务文档 ,count.txt是键值...

参考文档:SAE平台文档

 

 

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

java框架安全架构设计应如何与业务需求相平衡? java框架安全架构设计应如何与业务需求相平衡? Jun 04, 2024 pm 02:53 PM

通过平衡安全需求和业务需求,Java框架设计可实现安全:识别关键业务需求,优先考虑相关安全要求。制定弹性安全策略,分层应对威胁,定期调整。考虑架构灵活性,支持业务演变,抽象安全功能。优先考虑效率和可用性,优化安全措施,提高可见性。

C++ 函数重载的限制和注意事项有哪些? C++ 函数重载的限制和注意事项有哪些? Apr 13, 2024 pm 01:09 PM

函数重载的限制包括:参数类型和顺序必须不同(相同参数个数时),不能使用默认参数区分重载。此外,模板函数和非模板函数不能重载,不同模板规范的模板函数可以重载。值得注意的是,过度使用函数重载会影响可读性和调试,编译器从最具体到最不具体的函数进行搜索以解决冲突。

PHP微框架:Slim 和 Phalcon 的安全性探讨 PHP微框架:Slim 和 Phalcon 的安全性探讨 Jun 04, 2024 am 09:28 AM

Slim和Phalcon在PHP微框架的安全性对比中,Phalcon内置有CSRF和XSS防护、表单验证等安全特性,而Slim缺乏开箱即用的安全特性,需手动实施安全措施。对于安全至关重要的应用程序,Phalcon提供了更全面的保护,是更好的选择。

内联模板函数的应用与限制 内联模板函数的应用与限制 Apr 28, 2024 pm 02:33 PM

内联模板函数将代码直接插入调用点,无需生成单独的函数对象,应用包括代码优化、性能提升、常量求值和代码简化。但要注意其局限性,例如编译时间延长、代码大小增加、可调试性降低以及跨编译单元的限制。

谷歌管理器如何添加和管理用户 谷歌管理器如何添加和管理用户 Sep 02, 2024 pm 02:41 PM

谷歌管理器如何添加和管理用户?谷歌浏览器是支持多个用户登录使用的,这样我们跨设备登录也不用怕了,如果我们有许多用户就需要对其进行添加管理。有些小伙伴可能不知道要如何操作。不用担心,小编今天为大家整理了详细步骤教程说明,感兴趣的小伙伴快来和小编一起看看吧。详细步骤教程说明1、打开电脑后,在桌面上找到安装好的谷歌浏览器图标并双击打开,如下图所示。2、点击谷歌浏览器右上角的三小点图标,如下图所示。3、点击谷歌浏览器下拉菜单里的【设置】选项,如下图所示。4、在打开的谷歌浏览器设置界面里, 点击【管理ch

Struts 2框架的安全配置和加固 Struts 2框架的安全配置和加固 May 31, 2024 pm 10:53 PM

为保护Struts2应用程序,可以使用以下安全配置:禁用未使用的功能启用内容类型检查验证输入启用安全令牌防止CSRF攻击使用RBAC限制基于角色的访问

使用C++实现机器学习算法:安全性考虑和最佳实践 使用C++实现机器学习算法:安全性考虑和最佳实践 Jun 01, 2024 am 09:26 AM

在使用C++实现机器学习算法时,安全考虑至关重要,包括数据隐私、模型篡改和输入验证。最佳实践包括采用安全库、最小化权限、使用沙盒和持续监控。实战案例中展示了使用Botan库对CNN模型进行加密和解密,以确保安全训练和预测。

SHIB币放在哪个钱包更安全?(新手必看) SHIB币放在哪个钱包更安全?(新手必看) Jun 05, 2024 pm 01:30 PM

SHIB币对于投资者来说已经不陌生了,它是狗狗币同类型概念代币,随着市场的发展,目前SHIB的市值已经排名12了,可以看出SHIB市场的火爆,吸引力无数投资者参与投资。而此前市场的交易、钱包安全事件频出,很多投资者对于SHIB的存放问题一直感到担忧,不知道当下SHIB币放在哪个钱包更安全?根据市场数据分析来看,相对安全的钱包主要就是OKXWeb3Wallet、imToken、MetaMask钱包会比较安全,接下来小编为大家详细说说。SHIB币放在哪个钱包更安全?目前来看,SHIB币放在OKXWe

See all articles