用过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平台文档

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Dreamweaver Mac version
Visual web development tools

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

SublimeText3 English version
Recommended: Win version, supports code prompts!