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