萬盛學電腦網

 萬盛學電腦網 >> 服務器教程 >> 阿裡雲ACE的應用模板移植

阿裡雲ACE的應用模板移植

 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搭建圖片、視頻等多媒體分享網站,個人/企業數據備份等基於大規模數據的服務)。

由於ACE平台的限制,其上傳的文件不能存儲在本地,只能存儲在OSS中,必須使用ACE提供的上傳文件接口,文件上傳後會生成對應的url。PHP自帶的move_uploaded_file 方法已不能使用,請使用ACE提供方法。

文件上傳方法如下:

move_uploaded_file($tmp_name, $filename)

替換為:

$ce = new ACEStorage();

$result = $ce->upload($tmp_name, $filename);

#$rs1 = $ce->errmsg(); 輸出錯誤信息

#$rs2 = $ce->errno();

$result為返回的附件文件路徑,可直接訪問,如:

www.domain.com/aliyun_ce_storage/$filename

5. 圖片縮略、水印等特殊問題

受本地文件讀寫條件限制等問題,圖片縮略、水印等功能暫不支持,我們會在後續的版本中支持。

6. 數據備份恢復問題

ACE提供在線備份數據功能,在創建應用時,可以選擇備份時間點。

如果想從應用中導出數據,則需要使用數據庫客戶端工具進行操作。

copyright © 萬盛學電腦網 all rights reserved