国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

網(wǎng)上購(gòu)物系統(tǒng)的實(shí)現(xiàn)及性能優(yōu)化

2012-04-29 00:44:03徐躍偉
計(jì)算機(jī)時(shí)代 2012年1期
關(guān)鍵詞:性能優(yōu)化電子商務(wù)

徐躍偉

摘要采用Apache+PHP+MySQL技術(shù)開(kāi)發(fā)了一個(gè)動(dòng)態(tài)電子商務(wù)網(wǎng)站,分析了系統(tǒng)的整體框架和功能組成,并在MySQL的優(yōu)化和Memcache的使用萬(wàn)面提出了系統(tǒng)優(yōu)化的思路。

關(guān)鍵詞電子商務(wù),PHP,MySQL;Memcache,性能優(yōu)化

中圖分類(lèi)號(hào)TP391文獻(xiàn)標(biāo)志碼A文章編號(hào):1006-8228(2012)01-08-02

0引言

隨著全球信息化的發(fā)展,基于Intemet的電子商務(wù)顯示出了巨大的商業(yè)價(jià)值。電子商務(wù)(Electromc Commerce)是在互聯(lián)網(wǎng)Internet環(huán)境下,實(shí)現(xiàn)消費(fèi)者的網(wǎng)上購(gòu)物、商戶之間的網(wǎng)上交易和在線電子支付的一種商業(yè)運(yùn)營(yíng)模式,即通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)進(jìn)行交易或服務(wù)。電子商務(wù)包括B2B(busmess to business)、B2C(busmess to customer)和C2C(customer to customer)三種模式。其中B2C模式是商家與顧客之間進(jìn)行網(wǎng)上交易的一種模式,商家就像一個(gè)在網(wǎng)絡(luò)上經(jīng)營(yíng)的零售商,所有商品通過(guò)網(wǎng)絡(luò)直接銷(xiāo)售,從消費(fèi)者上網(wǎng)挑選商品,到購(gòu)物支付、物流配送,整個(gè)過(guò)程方便快捷。現(xiàn)在流行的團(tuán)購(gòu)、商城都屬于這種模式。

1開(kāi)發(fā)工具及總體概述

網(wǎng)上購(gòu)物系統(tǒng)運(yùn)行平臺(tái)為Windows 2003操作系統(tǒng),Web服務(wù)器軟件為Apache。系統(tǒng)開(kāi)發(fā)工具前端使用PHP,后臺(tái)數(shù)據(jù)庫(kù)使用MySQL,網(wǎng)頁(yè)設(shè)計(jì)工具為Dreamweaver MX。

APACHE是目前應(yīng)用最廣的Web服務(wù)器之一。當(dāng)前市場(chǎng)上較流行的Web服務(wù)器有Mmmsoft IIS、NetscapeEnterprise、IBM Domino Server+WebSphere等。微軟的IIS是使用多線程方式,IIS基本上還是值得信賴的,但是對(duì)于負(fù)荷較大的網(wǎng)站,HS在實(shí)際使用中經(jīng)常出現(xiàn)500錯(cuò)誤,而且有的時(shí)候還會(huì)出現(xiàn)莫名其妙的假死現(xiàn)象,用戶需要不定期的重新啟動(dòng)Ⅱs服務(wù)才能保證網(wǎng)站正常,同時(shí)IIS只能用于Wmdows環(huán)境。Apache在配置上比IIS復(fù)雜,不過(guò)一經(jīng)設(shè)置完畢就可以長(zhǎng)期的工作了。APACHE的所有配置都保存在配置文件中,使用時(shí)完全按照配置文件中記錄的信息執(zhí)行。一般不會(huì)發(fā)生莫名其妙的假死情況。Apache充分考慮到進(jìn)程帶來(lái)的穩(wěn)定性特征,以及線程帶來(lái)高效率的特點(diǎn)。它會(huì)預(yù)生成多個(gè)進(jìn)程,而每個(gè)進(jìn)程中使用多個(gè)線程提供Web服務(wù)。由于存在多個(gè)進(jìn)程,即使一個(gè)進(jìn)程死了也不會(huì)影響整個(gè)Web服務(wù)。對(duì)于不支持進(jìn)程的操作系統(tǒng),也可以使用多個(gè)線程提供服務(wù),反之也是一樣。然而,只有同時(shí)支持線程和進(jìn)程的操作系統(tǒng),才能充分利用Apache帶來(lái)的穩(wěn)定性和高負(fù)載能力。

PHP是一種用來(lái)制作動(dòng)態(tài)網(wǎng)頁(yè)的服務(wù)器端腳本語(yǔ)言,它大量借用了c、Java和Perl語(yǔ)言的語(yǔ)法并形成了PHP自己的特性,可以比CGI或者Perl更快地執(zhí)行動(dòng)態(tài)網(wǎng)頁(yè)。通過(guò)PHP和HTML創(chuàng)建頁(yè)面,當(dāng)訪問(wèn)者打開(kāi)網(wǎng)頁(yè)時(shí),服務(wù)器端便會(huì)處理PHP指令,然后把其處理結(jié)果送到訪問(wèn)者的瀏覽器上面,與ASP或ColdFumon類(lèi)似。然而,PHP跟AsP或ColdFuslon不一樣的地方在于,它是跨平臺(tái)的開(kāi)放源代碼。PHP可以在WindowsNT以及很多不同的Umx版本中執(zhí)行。更為重要的是PHP對(duì)數(shù)據(jù)庫(kù)的操作能力,強(qiáng)大的兼容性使其幾乎可以操作所有的數(shù)據(jù)庫(kù)。

MySQL是一個(gè)真正的多用戶、多線程的SQL數(shù)據(jù)庫(kù)服務(wù)器,它是—個(gè)客戶機(jī)服務(wù)器結(jié)構(gòu)的實(shí)現(xiàn)。MySQL是現(xiàn)在流行的關(guān)系數(shù)據(jù)庫(kù)中的一種,相比其他的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)來(lái)說(shuō),MySQL具有小巧、功能齊全、查詢迅捷等優(yōu)點(diǎn)。MySQL主要目標(biāo)是快速、健壯和易用。關(guān)鍵它是免費(fèi)的,可以在Interact上免費(fèi)下載到,可免費(fèi)使用。MySQL對(duì)于一般中小型,甚至大型應(yīng)用都能夠勝任。

由于這三個(gè)軟件均為自由軟件,同時(shí),APACHE、PHP和MySQL的組合還可以跨平臺(tái)運(yùn)行,可以在Windows上開(kāi)發(fā),然后在Unix平臺(tái)上運(yùn)行。因此,這三個(gè)軟件是架構(gòu)數(shù)據(jù)庫(kù)驅(qū)動(dòng)的動(dòng)態(tài)網(wǎng)站的絕佳組合。

2具體功能描述及需求

2.1系統(tǒng)總體框架

系統(tǒng)采用標(biāo)準(zhǔn)B/S三層結(jié)構(gòu)開(kāi)發(fā)。三層結(jié)構(gòu)分別為用戶界面(UI)層、業(yè)務(wù)邏輯層和數(shù)據(jù)層,如圖1所示。

(1)客戶層

客戶層提供了用戶瀏覽界面,使得用戶可以通過(guò)Web瀏覽器與服務(wù)器交互,提交輸入并將服務(wù)器端返回的數(shù)據(jù)呈現(xiàn)給客戶。為了提高用戶體驗(yàn),可以在客尸層使用AJAX技術(shù)。

(2)邏輯層

邏輯層負(fù)責(zé)接收Web瀏覽器傳來(lái)的請(qǐng)求并將請(qǐng)求傳給數(shù)據(jù)層,同時(shí)將請(qǐng)求處理結(jié)果發(fā)給Web 瀏覽器。它由Web表單和組件服務(wù)組成。其中Web表單是向客戶呈現(xiàn)數(shù)據(jù)和信息的基礎(chǔ),也是響應(yīng)和處理客戶信息和數(shù)據(jù)及顯示W(wǎng)eb表單交互生成的信息和數(shù)據(jù)的基礎(chǔ)。

(3)數(shù)據(jù)層

通過(guò)PHP的mysql擴(kuò)展庫(kù)或mysql擴(kuò)展庫(kù)操縱數(shù)據(jù),為業(yè)務(wù)邏輯層提供數(shù)據(jù)服務(wù),如存儲(chǔ)數(shù)據(jù)操作結(jié)果、返回?cái)?shù)據(jù)檢索結(jié)果等。

2.2功能設(shè)計(jì)

本文開(kāi)發(fā)的網(wǎng)上購(gòu)物系統(tǒng)主要包括顧客賬戶管理、購(gòu)物車(chē)、在線咨詢等功能模塊,如圖2所示,具體如下。

(1)顧客賬戶管理。新用戶可以進(jìn)行注冊(cè),已注冊(cè)用戶登錄后,可以查看和修改個(gè)人信息、下單購(gòu)買(mǎi)、查詢訂單、修改未付款訂單、對(duì)購(gòu)買(mǎi)的商品發(fā)表評(píng)論。

(2)購(gòu)物車(chē)。顧客選購(gòu)商品后會(huì)顯示購(gòu)物車(chē)界面,顧客可以繼續(xù)購(gòu)物,或者更改購(gòu)物數(shù)量、刪除購(gòu)物記錄、清空購(gòu)物車(chē)等。當(dāng)顧客購(gòu)物結(jié)束后,選擇在線結(jié)算,系統(tǒng)會(huì)顯示登錄界面,如果是新用戶,需要先注冊(cè)再登錄,如果是老用戶,直接登錄。顧客登錄后,選擇提交訂單,訂單會(huì)被存入數(shù)據(jù)厙,然后選擇付款方式,可以通過(guò)郵局匯款或者通過(guò)網(wǎng)上銀行支付,商家收到付款后就可以向顧客發(fā)貨了。

(3)在線咨詢。用于解答顧客的各種常見(jiàn)問(wèn)題。

(4)顧客瀏覽統(tǒng)計(jì)。顧客點(diǎn)擊商品后,該記錄會(huì)保存在數(shù)據(jù)庫(kù)中。后臺(tái)可顯示顧客測(cè)覽過(guò)的商品列表,從而發(fā)現(xiàn)顧客比較感興趣的商品。

(5)后臺(tái)商品管理。包括添加商品、修改商品和刪除商品。要注意的是,已經(jīng)有訂單的商品不能破刪除,從而防止訂單數(shù)據(jù)出錯(cuò)。

(6)后臺(tái)訂單管理。包括訂單的審核、無(wú)效訂單的刪除、將汀單記錄導(dǎo)出后進(jìn)行發(fā)貨及銷(xiāo)售統(tǒng)計(jì)表。

(7)后臺(tái)銷(xiāo)售統(tǒng)計(jì)。統(tǒng)計(jì)每天、每周、每月、每季度、全年各類(lèi)商品的銷(xiāo)售額和總銷(xiāo)售額。

3性能優(yōu)化

目前本系統(tǒng)已經(jīng)運(yùn)行了半年多,數(shù)據(jù)厙中的記錄已接近10萬(wàn)條,最多時(shí)同時(shí)在線人數(shù)達(dá)200人左右。隨著在線訪問(wèn)量和數(shù)據(jù)庫(kù)中記錄的增加,服務(wù)器的壓力也越來(lái)越大,經(jīng)常出現(xiàn)無(wú)響應(yīng)的狀態(tài),經(jīng)過(guò)以下兩方面的優(yōu)化,速度和穩(wěn)定性均有改善。

3.1mysql的優(yōu)化

對(duì)于mysql的優(yōu)化,非常重要的是緩存的使用,其中主要有兩種緩存索引緩沖區(qū)和查詢緩沖。

(1)索引緩沖區(qū)

索引緩沖區(qū)只對(duì)MyISAM表起作用,key_buffer_size指定索

引緩沖區(qū)的大小,它決定索引處理的速度,尢其是索引讀的速度。一般為16M,對(duì)于稍微大一點(diǎn)的站點(diǎn),這個(gè)數(shù)字是遠(yuǎn)遠(yuǎn)不夠的,通過(guò)檢查狀態(tài)值Key_read_requests和Key_reads,可以知道key_buffer_size設(shè)置是否合理。比例key_reads/key_read_requests應(yīng)該盡可能的低,至少是1100。根據(jù)服務(wù)器配置的內(nèi)存容量(2G)和mysql運(yùn)行狀態(tài)中key_reads/key_read_requests的比值,經(jīng)過(guò)多次測(cè)試,我們將key buffer_size設(shè)置為128M。

(2)查詢緩沖

從401開(kāi)始,MySQL提供了查詢緩沖機(jī)制。使用查詢緩沖,MySQL將SELECT語(yǔ)句和查詢結(jié)果存放在緩沖區(qū)中,今后對(duì)于同樣的SELECT語(yǔ)句,將直接從緩沖區(qū)中讀取結(jié)果。根據(jù)MySQL用戶手冊(cè),使用查詢緩沖最多可以達(dá)到238%的效率。query_cache_size用于設(shè)置查詢緩沖的大小,通過(guò)查看以下幾個(gè)參數(shù)可以知道query cache_stze設(shè)置的是否合理

Qcachemts、Qcache hrts、Qcache_lowmem runes、Qcache_fiee_blocks、Qcache_toral_blocks。

如果Qcache_lowmem_prunes的值非常大,則表明經(jīng)常出現(xiàn)緩沖不夠的情況。若Qcache_hrts的值非常大,則表明查詢緩沖使用非常頻繁,此時(shí)需要增加緩沖,Qcache hrts的值不大,則表明查詢重復(fù)率很低,這種情況,使用查詢緩沖反而會(huì)影響效率,那么可以考慮不用查詢緩沖。

query_cache_size默認(rèn)值為0,我們根據(jù)服務(wù)器配置和系統(tǒng)特點(diǎn)將該值設(shè)置為64,M,緩存的命中率達(dá)到了98.7%,從而大大提高了檢索效率。

3.2Memcache的使用

Memcache是高效、快速的分布式內(nèi)存對(duì)象緩存系統(tǒng),主要用于加速WEB動(dòng)態(tài)應(yīng)用程序。Memcached是以守護(hù)程序方式運(yùn)行于一個(gè)或多個(gè)服務(wù)器中,隨時(shí)接受客戶端的連接操作??蛻舳丝梢杂筛鞣N語(yǔ)言編寫(xiě),目前已知的客戶端API包括Perl/PHP/Python/Ruby/Java/C#/C等等。PHP等客尸端在與Memcache服務(wù)建立連接之后,接下來(lái)的事情就是存取對(duì)象了。每個(gè)被存取的對(duì)象都有一個(gè)惟一的標(biāo)識(shí)符key,存取操作均通過(guò)這個(gè)key進(jìn)行。保存到Memcaehe中的對(duì)象實(shí)際上是放置內(nèi)存中的,并不是保存在cache文件中的。使用memcache技術(shù)后,系統(tǒng)性能也得到了提升。

Memcache的優(yōu)勢(shì)主要體現(xiàn)在

(1)分布式??梢杂?0臺(tái)擁有4G內(nèi)存的機(jī)器,構(gòu)成一個(gè)40G的內(nèi)存池,如果覺(jué)得還不夠大,可以增加機(jī)器。這樣大的一個(gè)內(nèi)存池,完全可以把大部分熱點(diǎn)業(yè)務(wù)數(shù)據(jù)保存進(jìn)去,由內(nèi)存來(lái)滿足大部分對(duì)數(shù)據(jù)庫(kù)讀取的請(qǐng)求,從而減輕數(shù)據(jù)庫(kù)的壓力。

(2)單點(diǎn)。如果Web服務(wù)器或應(yīng)用服務(wù)器做負(fù)載均衡的話,在各自內(nèi)存中保存的緩存可能各不相同,如果數(shù)據(jù)需要同步,則比較麻煩,即使數(shù)據(jù)不需要同步,用戶也可能因?yàn)閿?shù)據(jù)的不一致而產(chǎn)生用戶體驗(yàn)上的不友好。

(3)性能強(qiáng)。由于內(nèi)存的讀寫(xiě)和磁盤(pán)讀寫(xiě)效率上相差幾個(gè)數(shù)量級(jí),因此,采用Memcache會(huì)比直接從數(shù)據(jù)庫(kù)讀取速度快很多。

4結(jié)束語(yǔ)

本文對(duì)Apache、PHP和MySQL技術(shù)進(jìn)行了簡(jiǎn)單的介紹,采用這三種技術(shù)開(kāi)發(fā)了一個(gè)動(dòng)態(tài)電子商務(wù)網(wǎng)站,分析了系統(tǒng)的整體框架和功能組成,在系統(tǒng)運(yùn)行過(guò)程中根據(jù)實(shí)際訪問(wèn)人數(shù)和服務(wù)器配置對(duì)MySQL進(jìn)行了優(yōu)化,同時(shí)采用Memcache技術(shù)對(duì)數(shù)據(jù)進(jìn)行緩存,從而提升了系統(tǒng)性能,也增加了可同時(shí)訪問(wèn)人數(shù)。

猜你喜歡
性能優(yōu)化電子商務(wù)
《電子商務(wù)法》如何助力直銷(xiāo)
電子商務(wù)
SQL Server數(shù)據(jù)庫(kù)性能優(yōu)化的幾點(diǎn)分析
Web應(yīng)用的前端性能優(yōu)化
660MW超超臨界火電機(jī)組RB性能優(yōu)化
關(guān)于加快制定電子商務(wù)法的議案
跨境電子商務(wù)中的跨文化思考
Oracle數(shù)據(jù)庫(kù)性能調(diào)整與優(yōu)化分析
科技視界(2016年1期)2016-03-30 14:27:50
龙游县| 洛扎县| 方山县| 淳安县| 北安市| 宁明县| 广灵县| 镇平县| 和政县| 宝应县| 杨浦区| 嘉禾县| 白玉县| 南投市| 蚌埠市| 龙江县| 清苑县| 安国市| 宁晋县| 新和县| 景东| 锦屏县| 湄潭县| 乐陵市| 淮安市| 报价| 会东县| 永泰县| 乌海市| 巫山县| 东乌珠穆沁旗| 绥中县| 安西县| 新蔡县| 鹿泉市| 余干县| 马龙县| 唐海县| 察哈| 陇西县| 固原市|