一種基于php收集及存儲(chǔ)日志的方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤其涉及一種基于PHP收集及存儲(chǔ)日志的方法和系 統(tǒng)。
【背景技術(shù)】
[0002] 現(xiàn)在對(duì)日志數(shù)據(jù)進(jìn)行存儲(chǔ)一般有幾種方法,常用的就是存儲(chǔ)在本地文件或數(shù)據(jù)庫(kù) 中。針對(duì)數(shù)據(jù)庫(kù)這種存儲(chǔ)方案,在日志數(shù)據(jù)量巨大的,并發(fā)高的情況下,會(huì)對(duì)數(shù)據(jù)庫(kù)讀寫能 力造成巨大的影響。
【發(fā)明內(nèi)容】
[0003] 本發(fā)明所要解決的技術(shù)問(wèn)題,提供一種基于PHP收集及存儲(chǔ)日志的方法和系統(tǒng)。
[0004] 本發(fā)明解決上述技術(shù)問(wèn)題的技術(shù)方案如下:一種基于PHP收集及存儲(chǔ)日志的方 法,包括以下步驟:
[0005] 步驟S1,客戶端上報(bào)日志數(shù)據(jù);
[0006] 步驟S2,日志收集模塊收集所述日志數(shù)據(jù),并發(fā)送給Redis緩存服務(wù)器;
[0007] 步驟S3,Redis緩存服務(wù)器存儲(chǔ)所述日志數(shù)據(jù);
[0008] 步驟S4,日志異步寫入模塊從Redis緩存服務(wù)器中逐行讀出所述日志數(shù)據(jù),并發(fā) 送到MongoDB數(shù)據(jù)庫(kù);
[0009] 步驟S5,MongoDB數(shù)據(jù)庫(kù)寫入所述日志數(shù)據(jù)并進(jìn)行存儲(chǔ)。
[0010] 在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn)。
[0011] 進(jìn)一步地,步驟S3中,Redis緩存服務(wù)器通過(guò)一個(gè)編寫的PHP寫入接口寫入所述 日志數(shù)據(jù)。
[0012] 進(jìn)一步地,步驟S4中,日志異步寫入模塊通過(guò)一個(gè)編寫的PHP腳本異步讀取所述 Redis緩存服務(wù)器中的日志數(shù)據(jù)。
[0013] 進(jìn)一步地,日志異步寫入模塊有多個(gè)。
[0014] 本發(fā)明解決上述技術(shù)問(wèn)題的另一種技術(shù)方案如下:一種基于PHP收集及存儲(chǔ)日志 的系統(tǒng),包括客戶端、日志收集模塊、Redis緩存服務(wù)器、日志異步寫入模塊和MongoDB數(shù)據(jù) 庫(kù);
[0015] 所述客戶端用于上報(bào)日志數(shù)據(jù);
[0016] 所述日志收集模塊用于收集客戶端上報(bào)的所述日志數(shù)據(jù),并發(fā)送給Redis緩存服 務(wù)器;
[0017] 所述Redis緩存服務(wù)器用于存儲(chǔ)所述日志收集模塊發(fā)送的所述日志數(shù)據(jù);
[0018] 所述日志異步寫入模塊用于從Redis緩存服務(wù)器中逐行讀出所述日志數(shù)據(jù),并發(fā) 送到MongoDB數(shù)據(jù)庫(kù);
[0019] 所述MongoDB數(shù)據(jù)庫(kù)用于寫入所述日志異步寫入模塊發(fā)送的所述日志數(shù)據(jù)并進(jìn) 行存儲(chǔ)。
[0020] 在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn)。
[0021] 進(jìn)一步地,所述Redis緩存服務(wù)器通過(guò)一個(gè)編寫的PHP寫入接口寫入所述日志數(shù) 據(jù)。
[0022] 進(jìn)一步地,所述日志異步寫入模塊通過(guò)一個(gè)編寫的PHP腳本異步讀取所述Redis 緩存服務(wù)器中的日志數(shù)據(jù)。
[0023] 進(jìn)一步地,所述日志異步寫入模塊有多個(gè)。
[0024] 進(jìn)一步地,所述基于PHP收集及存儲(chǔ)日志的系統(tǒng)的硬件配置環(huán)境為:CPU為2*4核 及2. 4G,內(nèi)存為4*8G或者8*8G,硬盤為2*300G,RAID控制器為支持RAID15,網(wǎng)絡(luò)接口為4 個(gè)千兆網(wǎng)口。
[0025] 進(jìn)一步地,所述基于PHP收集及存儲(chǔ)日志的系統(tǒng)的軟件配置環(huán)境為:操作系統(tǒng)為 1^111^06拉〇8 1646.2,緩存系統(tǒng)為1^(118 2.8.17,數(shù)據(jù)庫(kù)為1〇1^〇08 2.6.0,??jī)?cè)版本為 PHP5. 3. 22 〇
[0026] 本發(fā)明的有益效果是:本發(fā)明能夠方便的收集有效日志,保證數(shù)據(jù)庫(kù)的讀寫性能 在一個(gè)低并發(fā)、低10負(fù)載的范圍之內(nèi)工作,減輕存儲(chǔ)數(shù)據(jù)庫(kù)寫入壓力,使系統(tǒng)健康穩(wěn)定運(yùn) 行。
【附圖說(shuō)明】
[0027] 圖1為本發(fā)明所述基于PHP收集及存儲(chǔ)日志的方法流程圖;
[0028] 圖2為本發(fā)明所述基于PHP收集及存儲(chǔ)日志的系統(tǒng)結(jié)構(gòu)圖;
[0029] 圖3為本發(fā)明所述基于PHP收集及存儲(chǔ)日志的系統(tǒng)的實(shí)體結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0030] 以下結(jié)合附圖對(duì)本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并 非用于限定本發(fā)明的范圍。
[0031] 本發(fā)明中涉及到的名詞解釋:PHP(外文名:PHP:HypertextPreprocessor,中文 名:"超文本預(yù)處理器")是一種通用開源腳本語(yǔ)言。Redis是一個(gè)開源的使用ANSIC語(yǔ)言 編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫(kù),并提供多種語(yǔ)言的 API。MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù),由C++語(yǔ)言編寫,旨在為WEB應(yīng)用提供 可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。
[0032] 圖1為本發(fā)明所述基于PHP收集及存儲(chǔ)日志的方法流程圖。
[0033] 如圖1所示,一種基于PHP收集及存儲(chǔ)日志的方法,包括以下步驟:
[0034] 步驟S1,客戶端上報(bào)日志數(shù)據(jù);
[0035] 步驟S2,日志收集模塊收集所述日志數(shù)據(jù),并發(fā)送給Redis緩存服務(wù)器;Redis緩 存服務(wù)器通過(guò)一個(gè)編寫的PHP寫入接口寫入所述日志數(shù)據(jù);
[0036] 步驟S3,Redis緩存服務(wù)器存儲(chǔ)所述日志數(shù)據(jù);
[0037] 步驟S4,日志異步寫入模塊從Redis緩存服務(wù)器中逐行讀出所述日志數(shù)據(jù),并 發(fā)送到MongoDB數(shù)據(jù)庫(kù);所述日志異步寫入模塊通過(guò)一個(gè)編寫的PHP腳本異步讀取所述 Redis緩存服務(wù)器中的日志數(shù)據(jù)。日志異步寫入模塊可以有多個(gè);
[0038] 步驟S5,MongoDB數(shù)據(jù)庫(kù)寫入所述日志數(shù)據(jù)并進(jìn)行存儲(chǔ)。
[0039]圖2為本發(fā)明所述基于PHP收集及存儲(chǔ)日志的系統(tǒng)結(jié)構(gòu)圖。
[0040] 如圖2所示,一種基于PHP收集及存儲(chǔ)日志的系統(tǒng),包括客戶端、日志收集模塊、 Redis緩存服務(wù)器、日志異步寫入模塊和MongoDB數(shù)據(jù)庫(kù)。
[0041] 客戶端用于上報(bào)日志數(shù)據(jù)。
[0042]日志收集模塊用于收集客戶端上報(bào)的所述日志數(shù)據(jù),并發(fā)送給Redis緩存服務(wù) 器;Redis緩存服務(wù)器通過(guò)一個(gè)編寫的PHP寫入接口寫入所述日志數(shù)據(jù)。
[0043] Redis緩存服務(wù)器用于存儲(chǔ)所述日志收集模塊發(fā)送的所述日志數(shù)據(jù)。
[0044]日志異步寫入模塊用于從Redis緩存服務(wù)器中逐行讀出所述日志數(shù)據(jù),并發(fā)送到 MongoDB數(shù)據(jù)庫(kù);所述日志異步寫入模塊通過(guò)一個(gè)編寫的PHP腳本異步讀取所述Redis緩 存服務(wù)器中的日志數(shù)據(jù)。日志異步寫入模塊可以有多個(gè)。
[0045] MongoDB數(shù)據(jù)庫(kù)用于寫入所述日志異步寫入模塊發(fā)送的所述日志數(shù)據(jù)并進(jìn)行存 儲(chǔ)。
[0046]圖3為本發(fā)明所述基于PHP收集及存儲(chǔ)日志的系統(tǒng)的實(shí)體結(jié)構(gòu)圖。
[0047] 本發(fā)明所述基于PHP收集及存儲(chǔ)日志的系統(tǒng)的硬件配置、軟件配置和網(wǎng)絡(luò)環(huán)境如 下所述:
[0048] (1)硬件配置
[0049] 建議使用以下及高于以下配置的硬件服務(wù)器。
[0050]
[0054] (3)網(wǎng)絡(luò)環(huán)境
[0055] 使用內(nèi)網(wǎng),建議使用千兆網(wǎng)絡(luò)接入。
[0056] 本發(fā)明中所述日志收集模塊和所述日志異步寫入模塊的名稱可分別設(shè)置為feed. php和collect_to_mongodb.php〇
[0057] 本發(fā)明的配制方法可為:如在linux定時(shí)任務(wù)配置:
[0058] 氺/I氺氺氺氺/usr/bin/php_f/data/xxxxx/xxxx/xx/collect_to_mongodb.php〇
[0059] 以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和 原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1. 一種基于PHP收集及存儲(chǔ)日志的方法,其特征在于,包括以下步驟: 步驟S1,客戶端上報(bào)日志數(shù)據(jù); 步驟S2,日志收集模塊收集所述日志數(shù)據(jù),并發(fā)送給Redis緩存服務(wù)器; 步驟S3, Redis緩存服務(wù)器存儲(chǔ)所述日志數(shù)據(jù); 步驟S4,日志異步寫入模塊從Redis緩存服務(wù)器中逐行讀出所述日志數(shù)據(jù),并發(fā)送到 MongoDB數(shù)據(jù)庫(kù); 步驟S5, MongoDB數(shù)據(jù)庫(kù)寫入所述日志數(shù)據(jù)并進(jìn)行存儲(chǔ)。2. 根據(jù)權(quán)利要求1所述的基于PHP收集及存儲(chǔ)日志的方法,其特征在于,步驟S3中, Redis緩存服務(wù)器通過(guò)一個(gè)編寫的PHP寫入接口寫入所述日志數(shù)據(jù)。3. 根據(jù)權(quán)利要求1所述的基于PHP收集及存儲(chǔ)日志的方法,其特征在于,步驟S4中,日 志異步寫入模塊通過(guò)一個(gè)編寫的PHP腳本異步讀取所述Redis緩存服務(wù)器中的日志數(shù)據(jù)。4. 根據(jù)權(quán)利要求1所述的基于PHP收集及存儲(chǔ)日志的方法,其特征在于,日志異步寫入 模塊有多個(gè)。5. -種基于PHP收集及存儲(chǔ)日志的系統(tǒng),其特征在于,包括客戶端、日志收集模塊、 Redis緩存服務(wù)器、日志異步寫入模塊和MongoDB數(shù)據(jù)庫(kù); 所述客戶端用于上報(bào)日志數(shù)據(jù); 所述日志收集模塊用于收集客戶端上報(bào)的所述日志數(shù)據(jù),并發(fā)送給Redis緩存服務(wù) 器; 所述Redis緩存服務(wù)器用于存儲(chǔ)所述日志收集模塊發(fā)送的所述日志數(shù)據(jù); 所述日志異步寫入模塊用于從Redis緩存服務(wù)器中逐行讀出所述日志數(shù)據(jù),并發(fā)送到 MongoDB數(shù)據(jù)庫(kù); 所述MongoDB數(shù)據(jù)庫(kù)用于寫入所述日志異步寫入模塊發(fā)送的所述日志數(shù)據(jù)并進(jìn)行存 儲(chǔ)。6. 根據(jù)權(quán)利要求5所述的基于PHP收集及存儲(chǔ)日志的系統(tǒng),其特征在于,所述Redis緩 存服務(wù)器通過(guò)一個(gè)編寫的PHP寫入接口寫入所述日志數(shù)據(jù)。7. 根據(jù)權(quán)利要求5所述的基于PHP收集及存儲(chǔ)日志的系統(tǒng),其特征在于,所述日志異步 寫入模塊通過(guò)一個(gè)編寫的PHP腳本異步讀取所述Redis緩存服務(wù)器中的日志數(shù)據(jù)。8. 根據(jù)權(quán)利要求5所述的基于PHP收集及存儲(chǔ)日志的系統(tǒng),其特征在于,所述日志異步 寫入模塊有多個(gè)。9. 根據(jù)權(quán)利要求5所述的基于PHP收集及存儲(chǔ)日志的系統(tǒng),其特征在于,硬件配置環(huán) 境為:CPU為2*4核及2. 4G,內(nèi)存為4*8G或者8*8G,硬盤為2*300G,RAID控制器為支持 RAID15,網(wǎng)絡(luò)接口為4個(gè)千兆網(wǎng)口。10. 根據(jù)權(quán)利要求5所述的基于PHP收集及存儲(chǔ)日志的系統(tǒng),其特征在于,軟件配置 環(huán)境為:操作系統(tǒng)為L(zhǎng)inux Centos x646. 2,緩存系統(tǒng)為Redis2. 8. 17,數(shù)據(jù)庫(kù)為MongoDB 2. 6. 0, PHP 版本為 PHP 5. 3. 22。
【專利摘要】本發(fā)明涉及一種基于PHP收集及存儲(chǔ)日志的方法和系統(tǒng),包括步驟S1,客戶端上報(bào)日志數(shù)據(jù);步驟S2,日志收集模塊收集所述日志數(shù)據(jù),并發(fā)送給Redis緩存服務(wù)器;步驟S3,Redis緩存服務(wù)器存儲(chǔ)所述日志數(shù)據(jù);步驟S4,日志異步寫入模塊從Redis緩存服務(wù)器中逐行讀出所述日志數(shù)據(jù),并發(fā)送到MongoDB數(shù)據(jù)庫(kù);步驟S5,MongoDB數(shù)據(jù)庫(kù)寫入所述日志數(shù)據(jù)并進(jìn)行存儲(chǔ);本發(fā)明能夠方便的收集有效日志,保證數(shù)據(jù)庫(kù)的讀寫性能在一個(gè)低并發(fā)、低IO負(fù)載的范圍之內(nèi)工作,減輕存儲(chǔ)數(shù)據(jù)庫(kù)寫入壓力,使系統(tǒng)健康穩(wěn)定運(yùn)行。
【IPC分類】G06F17/30
【公開號(hào)】CN105022822
【申請(qǐng)?zhí)枴緾N201510425305
【發(fā)明人】陳朱堯, 蔡華軼
【申請(qǐng)人】成都視達(dá)科信息技術(shù)有限公司
【公開日】2015年11月4日
【申請(qǐng)日】2015年7月17日