PHPOceanBase擴(kuò)展:錯(cuò)誤日志的優(yōu)化
PHPOceanBase擴(kuò)展:錯(cuò)誤日志的優(yōu)化
Oceanbase,一個(gè)分布式數(shù)據(jù)庫(kù)
一個(gè)支持海量數(shù)據(jù)的高性能分布式數(shù)據(jù)庫(kù)系統(tǒng),實(shí)現(xiàn)了數(shù)千億條記錄、
數(shù)百TB數(shù)據(jù)上的跨行跨表事務(wù),由淘寶核心系統(tǒng)研發(fā)部、運(yùn)維、
DBA、廣告、應(yīng)用研發(fā)等部門共同完成.
目前OceanBase已經(jīng)應(yīng)用于淘寶收藏夾,用于存儲(chǔ)淘寶用戶收藏條目
和具體的商品、店鋪信息,每天支持4~5千萬的更新操作。
等待上線的應(yīng)用還包括CTU、SNS等,每天更新超過20億,
更新數(shù)據(jù)量超過2.5TB,并會(huì)逐步在淘寶內(nèi)部推廣.
OceanBase 數(shù)據(jù)庫(kù)支持多種客戶端,C++/JAVA,
我負(fù)責(zé)的收藏夾功能就是用的OceanBase數(shù)據(jù)庫(kù)作為存儲(chǔ),
剛開始的時(shí)候接手不順利,Ob從來沒用過,而Ob又不完全相同于
其他類型的Nosql,所以開始有些困難,不過用到現(xiàn)在,
確實(shí)還不錯(cuò),只是PHP的客戶端用起來很坑爹。
php的客戶端用的是C做的擴(kuò)展,雖然能夠?qū)崿F(xiàn)讀寫更新等操作,
但是對(duì)于排錯(cuò)來講,那基本就是個(gè)零,無論你調(diào)用成功還是失敗,
永遠(yuǎn)只返回true和false,怎么失敗的都不知道。
早就說要改一改,能夠讓排錯(cuò)能力更強(qiáng)一些,前兩天終于
能夠抽出點(diǎn)時(shí)間,來修改一下擴(kuò)展。
兩種方案:
1、提供getError和getErrno方法用于獲取ob的錯(cuò)誤記錄。
2、直接將錯(cuò)誤日志打印到php.ini配置的log_file,可以用
log_level來設(shè)置錯(cuò)誤級(jí)別:支持,ERROR,WARN,INFO,DEBUG ,日志級(jí)別后面越來越高。
最后決定采用第二種方案
沒有什么難度,只是根據(jù)php.ini的配置調(diào)用libobapi.cpp的 ob_api_debug_log API,
ob_api_debug_log(obj->ob,OCEANBASE_G(log_level),OCEANBASE_G(log_file));
使用方法:
1、[oceanbase]
2、extension=oceanbase.so ;加載擴(kuò)展
3、You Can use theses Args:"ERROR","WARN","INFO","DEBUG"
4、@siren
5、oceanbase.log_level = ERROR;設(shè)置錯(cuò)誤級(jí)別
6、
7、oceanbase.log_file=/tmp/ob_log_2.txt;設(shè)置發(fā)生錯(cuò)誤時(shí)的日志文件。
源碼已經(jīng)放在github中。。
本文來源:https://www.fushouyu.com/article/149.html