新浪云SAE 关于部分函数不能使用的做法

时间:2023-03-09 02:08:08
新浪云SAE 关于部分函数不能使用的做法

例如:file_put_contents("test.txt","Hello World. Testing!");

可以这样写:

file_put_contents("saekv://test.txt", $response, FILE_APPEND);

这样就可以了

Wrappers

PHP 自 4.3 版本以来,引入了 stream 流的概念,简单说,就是可以用通用的 IO 读写函数来操作各种资源,比如:tcp、udp、http、ftp 等等,这样做的好处是统一了接口的封装。这就像在 Unix 中将各种设备都抽象成文件,你可以使用 read/write 来操作各种设备,这样统一了操作接口,易于理解和使用。Wrappers 就是用来告诉 stream 流该如何处理(读写)特定的资源。

Wrappers 使用非常简单,比如下面就是一个最常见一个使用 Wrapper 的语句:

<?php
$c = file_get_contents("http://sae.sina.com.cn");
?>

这里就是使用 http:// Wrapper 实现抓取远程内容并赋值给一个变量的操作。

由于新浪云的 PHP 运行环境并不提供持久性本地 IO 能力,所以 PHP 运行环境提供了提供了 Memcached,Storage,KVDB 的 Wrappers 来方便开发者迁移原有程序。

如果你的原有程序中,使用了本地文件型缓存,那么你可以方便地使用 saemc:// 替换本地文件缓存的前缀。

如果你的原有程序中,有文件存储的需求,你原来可能是通过 NFS 或者就是单机提供的存储服务,那么你可以方便地使用 saestor:// 或 saekv:// 来替换原来的存储前缀,注意存储的用途是用于文件落地的永久存储,任何缓存、中间临时交换数据的需求都是不适合使用 Storage 和 KVDB 存储的。

<?php
# 使用"saekv://"这个 Wrapper 将配置文件 config.php 的内容以"config.php"为 key 保存到 KVDB 中,
# 然后用 include 引用了这个文件
file_put_contents('saekv://config.php','');
include 'saekv://config.php';
?>

重要

使用 Wrappers 请要先初始化相应的服务,上例中 KVDB 服务必须是开启的状态。