APP下载

网上购物系统的实现及性能优化

2012-04-29徐跃伟

计算机时代 2012年1期
关键词:性能优化电子商务

徐跃伟

摘要采用Apache+PHP+MySQL技术开发了一个动态电子商务网站,分析了系统的整体框架和功能组成,并在MySQL的优化和Memcache的使用万面提出了系统优化的思路。

关键词电子商务,PHP,MySQL;Memcache,性能优化

中图分类号TP391文献标志码A文章编号:1006-8228(2012)01-08-02

0引言

随着全球信息化的发展,基于Intemet的电子商务显示出了巨大的商业价值。电子商务(Electromc Commerce)是在互联网Internet环境下,实现消费者的网上购物、商户之间的网上交易和在线电子支付的一种商业运营模式,即通过计算机网络进行交易或服务。电子商务包括B2B(busmess to business)、B2C(busmess to customer)和C2C(customer to customer)三种模式。其中B2C模式是商家与顾客之间进行网上交易的一种模式,商家就像一个在网络上经营的零售商,所有商品通过网络直接销售,从消费者上网挑选商品,到购物支付、物流配送,整个过程方便快捷。现在流行的团购、商城都属于这种模式。

1开发工具及总体概述

网上购物系统运行平台为Windows 2003操作系统,Web服务器软件为Apache。系统开发工具前端使用PHP,后台数据库使用MySQL,网页设计工具为Dreamweaver MX。

APACHE是目前应用最广的Web服务器之一。当前市场上较流行的Web服务器有Mmmsoft IIS、NetscapeEnterprise、IBM Domino Server+WebSphere等。微软的IIS是使用多线程方式,IIS基本上还是值得信赖的,但是对于负荷较大的网站,HS在实际使用中经常出现500错误,而且有的时候还会出现莫名其妙的假死现象,用户需要不定期的重新启动Ⅱs服务才能保证网站正常,同时IIS只能用于Wmdows环境。Apache在配置上比IIS复杂,不过一经设置完毕就可以长期的工作了。APACHE的所有配置都保存在配置文件中,使用时完全按照配置文件中记录的信息执行。一般不会发生莫名其妙的假死情况。Apache充分考虑到进程带来的稳定性特征,以及线程带来高效率的特点。它会预生成多个进程,而每个进程中使用多个线程提供Web服务。由于存在多个进程,即使一个进程死了也不会影响整个Web服务。对于不支持进程的操作系统,也可以使用多个线程提供服务,反之也是一样。然而,只有同时支持线程和进程的操作系统,才能充分利用Apache带来的稳定性和高负载能力。

PHP是一种用来制作动态网页的服务器端脚本语言,它大量借用了c、Java和Perl语言的语法并形成了PHP自己的特性,可以比CGI或者Perl更快地执行动态网页。通过PHP和HTML创建页面,当访问者打开网页时,服务器端便会处理PHP指令,然后把其处理结果送到访问者的浏览器上面,与ASP或ColdFumon类似。然而,PHP跟AsP或ColdFuslon不一样的地方在于,它是跨平台的开放源代码。PHP可以在WindowsNT以及很多不同的Umx版本中执行。更为重要的是PHP对数据库的操作能力,强大的兼容性使其几乎可以操作所有的数据库。

MySQL是一个真正的多用户、多线程的SQL数据库服务器,它是—个客户机服务器结构的实现。MySQL是现在流行的关系数据库中的一种,相比其他的数据库管理系统(DBMS)来说,MySQL具有小巧、功能齐全、查询迅捷等优点。MySQL主要目标是快速、健壮和易用。关键它是免费的,可以在Interact上免费下载到,可免费使用。MySQL对于一般中小型,甚至大型应用都能够胜任。

由于这三个软件均为自由软件,同时,APACHE、PHP和MySQL的组合还可以跨平台运行,可以在Windows上开发,然后在Unix平台上运行。因此,这三个软件是架构数据库驱动的动态网站的绝佳组合。

2具体功能描述及需求

2.1系统总体框架

系统采用标准B/S三层结构开发。三层结构分别为用户界面(UI)层、业务逻辑层和数据层,如图1所示。

(1)客户层

客户层提供了用户浏览界面,使得用户可以通过Web浏览器与服务器交互,提交输入并将服务器端返回的数据呈现给客户。为了提高用户体验,可以在客尸层使用AJAX技术。

(2)逻辑层

逻辑层负责接收Web浏览器传来的请求并将请求传给数据层,同时将请求处理结果发给Web 浏览器。它由Web表单和组件服务组成。其中Web表单是向客户呈现数据和信息的基础,也是响应和处理客户信息和数据及显示Web表单交互生成的信息和数据的基础。

(3)数据层

通过PHP的mysql扩展库或mysql扩展库操纵数据,为业务逻辑层提供数据服务,如存储数据操作结果、返回数据检索结果等。

2.2功能设计

本文开发的网上购物系统主要包括顾客账户管理、购物车、在线咨询等功能模块,如图2所示,具体如下。

(1)顾客账户管理。新用户可以进行注册,已注册用户登录后,可以查看和修改个人信息、下单购买、查询订单、修改未付款订单、对购买的商品发表评论。

(2)购物车。顾客选购商品后会显示购物车界面,顾客可以继续购物,或者更改购物数量、删除购物记录、清空购物车等。当顾客购物结束后,选择在线结算,系统会显示登录界面,如果是新用户,需要先注册再登录,如果是老用户,直接登录。顾客登录后,选择提交订单,订单会被存入数据厍,然后选择付款方式,可以通过邮局汇款或者通过网上银行支付,商家收到付款后就可以向顾客发货了。

(3)在线咨询。用于解答顾客的各种常见问题。

(4)顾客浏览统计。顾客点击商品后,该记录会保存在数据库中。后台可显示顾客测览过的商品列表,从而发现顾客比较感兴趣的商品。

(5)后台商品管理。包括添加商品、修改商品和删除商品。要注意的是,已经有订单的商品不能破删除,从而防止订单数据出错。

(6)后台订单管理。包括订单的审核、无效订单的删除、将汀单记录导出后进行发货及销售统计表。

(7)后台销售统计。统计每天、每周、每月、每季度、全年各类商品的销售额和总销售额。

3性能优化

目前本系统已经运行了半年多,数据厍中的记录已接近10万条,最多时同时在线人数达200人左右。随着在线访问量和数据库中记录的增加,服务器的压力也越来越大,经常出现无响应的状态,经过以下两方面的优化,速度和稳定性均有改善。

3.1mysql的优化

对于mysql的优化,非常重要的是缓存的使用,其中主要有两种缓存索引缓冲区和查询缓冲。

(1)索引缓冲区

索引缓冲区只对MyISAM表起作用,key_buffer_size指定索

引缓冲区的大小,它决定索引处理的速度,尢其是索引读的速度。一般为16M,对于稍微大一点的站点,这个数字是远远不够的,通过检查状态值Key_read_requests和Key_reads,可以知道key_buffer_size设置是否合理。比例key_reads/key_read_requests应该尽可能的低,至少是1100。根据服务器配置的内存容量(2G)和mysql运行状态中key_reads/key_read_requests的比值,经过多次测试,我们将key buffer_size设置为128M。

(2)查询缓冲

从401开始,MySQL提供了查询缓冲机制。使用查询缓冲,MySQL将SELECT语句和查询结果存放在缓冲区中,今后对于同样的SELECT语句,将直接从缓冲区中读取结果。根据MySQL用户手册,使用查询缓冲最多可以达到238%的效率。query_cache_size用于设置查询缓冲的大小,通过查看以下几个参数可以知道query cache_stze设置的是否合理

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

如果Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况。若Qcache_hrts的值非常大,则表明查询缓冲使用非常频繁,此时需要增加缓冲,Qcache hrts的值不大,则表明查询重复率很低,这种情况,使用查询缓冲反而会影响效率,那么可以考虑不用查询缓冲。

query_cache_size默认值为0,我们根据服务器配置和系统特点将该值设置为64,M,缓存的命中率达到了98.7%,从而大大提高了检索效率。

3.2Memcache的使用

Memcache是高效、快速的分布式内存对象缓存系统,主要用于加速WEB动态应用程序。Memcached是以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作。客户端可以由各种语言编写,目前已知的客户端API包括Perl/PHP/Python/Ruby/Java/C#/C等等。PHP等客尸端在与Memcache服务建立连接之后,接下来的事情就是存取对象了。每个被存取的对象都有一个惟一的标识符key,存取操作均通过这个key进行。保存到Memcaehe中的对象实际上是放置内存中的,并不是保存在cache文件中的。使用memcache技术后,系统性能也得到了提升。

Memcache的优势主要体现在

(1)分布式。可以由10台拥有4G内存的机器,构成一个40G的内存池,如果觉得还不够大,可以增加机器。这样大的一个内存池,完全可以把大部分热点业务数据保存进去,由内存来满足大部分对数据库读取的请求,从而减轻数据库的压力。

(2)单点。如果Web服务器或应用服务器做负载均衡的话,在各自内存中保存的缓存可能各不相同,如果数据需要同步,则比较麻烦,即使数据不需要同步,用户也可能因为数据的不一致而产生用户体验上的不友好。

(3)性能强。由于内存的读写和磁盘读写效率上相差几个数量级,因此,采用Memcache会比直接从数据库读取速度快很多。

4结束语

本文对Apache、PHP和MySQL技术进行了简单的介绍,采用这三种技术开发了一个动态电子商务网站,分析了系统的整体框架和功能组成,在系统运行过程中根据实际访问人数和服务器配置对MySQL进行了优化,同时采用Memcache技术对数据进行缓存,从而提升了系统性能,也增加了可同时访问人数。

猜你喜欢

性能优化电子商务
《电子商务法》如何助力直销
电子商务
SQL Server数据库性能优化的几点分析
Web应用的前端性能优化
关于加快制定电子商务法的议案
跨境电子商务中的跨文化思考
Oracle数据库性能调整与优化分析