標籤:style blog http color os io ar strong for
一、介紹
SSDB的PHP API方便的提供了php的開發介面。git地址 https://github.com/ideawu/ssdb.git ,SSDB官方文檔地址 http://ssdb.io/zh_cn/
二、SSDB類結構圖
PHP 介面源碼檔案在 /api/php/SSDB.php
三、SSDB網路通訊協定
報文
Packet := Block+ ‘\n‘Block := Size ‘\n‘ Data ‘\n‘Size := literal_integerData := size_bytes_of_data
請求
Request := Cmd Blocks*Cmd := Block
請求命令包括: get, set, del, ...
響應
Response := Status Block*Status := Block
響應狀態代碼包括: ok, not_found, error, fail, client_error
樣本
用 telnet 或者 nc 命令串連到 SSDB 伺服器, 然後輸入下面的代碼(用最後一行空行結束):
3get3key
你將看到類似這樣的響應:
2ok3val
在api中的send處理中,對於cmd和argus按照網路通訊協定的格式發送給伺服器。相關代碼如下
private function send($data){ $ps = array(); foreach($data as $p){ $ps[] = strlen($p); $ps[] = $p; } $s = join("\n", $ps) . "\n\n"; if($this->debug){ echo ‘> ‘ . str_replace(array("\r", "\n"), array(‘\r‘, ‘\n‘), $s) . "\n"; } try{ while(true){ $ret = @fwrite($this->sock, $s); if($ret == false){ $this->close(); throw new SSDBException(‘Connection lost‘); } $s = substr($s, $ret); if(strlen($s) == 0){ break; } @fflush($this->sock); } }catch(Exception $e){ $this->close(); throw new SSDBException($e->getMessage()); } return $ret; }
SSDB之php API簡析