Aliyun Cloud Engine(以下簡稱ACE)是基于彈性計(jì)算平臺的可線性伸縮的應(yīng)用托管運(yùn)行環(huán)境。應(yīng)用模板是我們借鑒了業(yè)內(nèi)的App Store的概念,簡化用戶創(chuàng)建應(yīng)用的步驟,方便應(yīng)用的推廣。本文只講述PHP應(yīng)用的模板移植,其它語言請參考相關(guān)文檔。
1. 文件、目錄讀寫出于安全角度考慮,ACE對本地文件讀寫進(jìn)行了一些限制,用戶數(shù)據(jù)建議放在我們的OSS中(開放存儲服務(wù),具備高可靠性及可擴(kuò)展性的海量數(shù)據(jù)存儲),文件讀寫都需使用ACE提供的統(tǒng)一接口。ACE支持創(chuàng)建用戶數(shù)據(jù)目錄,也支持創(chuàng)建源代碼文件上的目錄。
PHP自帶的fread、fwite 已被ACE默認(rèn)關(guān)閉,請使用以下方法實(shí)現(xiàn)。
< ?php
Class CeFile{}
Function write($fileName, $content, $sync=0) 文件寫入
$fileName 文件路徑(相對路徑)
$content 文件內(nèi)容
$sync是否需要同步到所有web端,為保證多臺web數(shù)據(jù)同步,默認(rèn)設(shè)為0
返回 true|false
Function read($fileName) 讀取文件內(nèi)容
$fileName 文件路徑(相對路徑)
返回文件內(nèi)容|false
Function delete($fileName) 刪除文件
$fileName 文件路徑(相對路徑)
返回 true|false
成員變量errno 為錯誤代號
成員變量errmsg 為返回的錯誤信息供debug時(shí)使用
?>
ACE文件讀寫方法如下:
//創(chuàng)建cefile對象
$ce = new CeFile();
//文件寫入
$ce->write($fileName, $content, $sync=0);
//讀取文件內(nèi)容
$ce->read($fileName);
//刪除文件
$ce->delete($fileName);
2. 文件緩存部署文件緩存的主要目的是把經(jīng)常訪問的數(shù)據(jù)保存在本地文件中,當(dāng)有請求訪問的時(shí)候,直接將數(shù)據(jù)調(diào)出,避免了再次對數(shù)據(jù)庫的請求的I/O操作,減少數(shù)據(jù)庫的負(fù)載壓力。
ACE給每個(gè)應(yīng)用默認(rèn)部署兩個(gè)實(shí)例,當(dāng)有請求訪問的時(shí)候,該請求就會路由到其中的一個(gè)實(shí)例。ACE具有伸縮性,隨著請求的增加和減少,可以增加或減少實(shí)例。為了提高性能,ACE也具有文件緩存功能,如緩存配置信息。當(dāng)用戶修改配置文件時(shí),應(yīng)調(diào)用文件緩存的功能,實(shí)現(xiàn)多臺實(shí)例間配置信息的同步。
因此,應(yīng)用中若用到文件緩存,必須使用ACE提供的文件讀寫接口,使用方法同文件讀寫。使用文件緩存部署應(yīng)將write方法$sync同步參數(shù)設(shè)置為1。
3. Memcache緩存部署Memcache緩存管理是AACE為開發(fā)者提供的分布式緩存服務(wù),以共享的方式緩存用戶的key-value形式的小數(shù)據(jù),以加快數(shù)據(jù)響應(yīng)速度,減輕后端數(shù)據(jù)處理的壓力。
ACE環(huán)境下的memchae是默認(rèn)為開啟的,默認(rèn)給用戶免費(fèi)提供64M。若用戶需要使用memcache緩存,注意以下事項(xiàng)。
ACE支持的Memcache 的API如下:
bool Memcache::init ()
array Memcache::get ( array $keys [, array &$flags ] )
bool Memcache::set ( string $key , mixed $var [, int $flag [, int $expire ]] )
bool add ( string $key , mixed $var [, int $flag [, int $expire ]] )
bool replace ( string $key , mixed $var [, int $flag [, int $expire ]] )
bool decrement ( string $key [, int $value = 1 ] )
bool increment ( string $key [, int $value = 1 ] )
bool delete ( string $key [, int $timeout = 0 ] )
bool close ()
ACE不支持的Memcache 的API 如下:
bool addServer* *( string $host [, int $port =
11211 [, bool $persistent [, int $weight [, int $timeout [, int $retry_interval [, bool
$status [, callback $failure_callback [, int $timeoutms ]]]]]]]] )
bool connect* *( string $host [, int $port [, int $timeout ]] )
bool flush* *( void )
bool* *pconnect ( string $host [, int $port [, int $timeout ]] )
bool setServerParams* *( string $host [, int $port =
11211 [, int $timeout [, int $retry_interval = false [, bool $status [, callback$failure_callback ]]]]] )
應(yīng)用如果使用Memcache緩存,就必須使用ACE提供的memcache緩存接口。Memcache緩存使用方法如下:
< ?php
//連接
$mem = new Memcache(); //創(chuàng)建memcache對象,內(nèi)部會訪問agent獲取地址 及ID
$mem->init();
//保存數(shù)據(jù)
$mem->set('key1', 'This is first value', 0, 60);
$val = $mem->get('key1');
//替換數(shù)據(jù)
$mem->replace('key1', 'This is replace value', 0, 60);
$val = $mem->get('key1');
//保存數(shù)組
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 0, 60);
$val2 = $mem->get('key2');
//刪除數(shù)據(jù)
$mem->delete('key1');
$val = $mem->get('key1');
//關(guān)閉連接
$mem->close();
?>
4. 文件上傳通過Web上傳的文件都是基于OSS的存儲(OSS是阿里云提供的開放存儲服務(wù),用戶可以利用OSS搭建圖片、視頻等多媒體分享網(wǎng)站,個(gè)人/企業(yè)數(shù)據(jù)備份等基于大規(guī)模數(shù)據(jù)的服務(wù))。