ecshop二次开发学习方法
近年来,随着互联网的发展,电子商务也跟着一起成长,B2B,C2C,B2C的电子商务模式也不断的成熟。这时催生出了众多电子商务相关的php开源产品。B2C方面有Ecshop,Zencart,Magento等国内外知名产品。
下面我们就来简单介绍一下学习Ecshop二次开发的过程和要注意的一些东西:
Ecshop二次开发必备基础:
· 非常熟悉HTML
· 熟悉DIV+css的布局
· 扎实的PHP基础,熟悉结构化编程,了解OOP,并能看懂和使用
· 熟悉Smarty模板引擎
· 熟悉mysql,掌握SQL语言
Ecshop二次开发学习过程
· 熟悉电子商务基本概念
· 熟悉EcShop 的基本功能使用(商品类型,商品分类,商品属性设置,促销活动使用等)
· 掌握Ecshop的数据库结构和数据库设计思想
· 熟悉ER的模式,实体与关系的建立
熟悉每个表的作用,了解几个核心表的设计及字段的含义,方便拿到新的需求之后,能快速的判断是否加字
段,还是新建表来处理。同时也能理解Ecshop的数据库设计思想,把有用的设计思路加到自己的系统中
· 文件结构分析及代码分析
熟悉一些登陆,注册,文档管理,权限控制,分类管理,商品类型等一些常用流程控制。对几个核心文件进
行解剖,了解其编程技巧及安全机制
· Ecshop文件结构分析:
includescls_captcha.php: 验证码图片类
includescls_ecshop.php: 基础类
includescls_ecshop.php(56): 密码编译方法;
includescls_rss.php: RSS 类
includescls_smtp.php: SMTP 邮件类
includesinc_constant.php: 常量
includesinit.php: 前台公用文件
includeslib_common.php: 公用函数库
includeslib_goodscat.php: 前台公用函数库
includeslib_insert.php: 动态内容函数库
includeslib_main.php: 前台公用函数库
includeslib_payment.php: 支付接口函数库
includesiconvcls_iconv.php: 字符集转换类
includesipcls_ip.php: IP 归属地查询类
includesmodulesintegratesdiscuz.php: 会员数据处理类
includesmodulesintegratesecshop.php: 会员数据处理类
ecshop模板更换
熟悉Smarty的精简版的使用,嵌入自己的界面,EcShop模板的跟换技巧
Ecshop二次开发实例
中英文切换的功能,秒杀功能,京东商城模板的制作等
学习目的:
1,会使用Ecshop进行二次开发
2,会换普通的模板及一些功能的修改
3,吸取里面的开发经验
掌握基础知识-》模仿里面的一些写法-》修改里面的模式(形成自己的开发模式)
掌握Ecshop里面的编程技巧及系统设计技巧
◆缓存技术分析
常见的PHP缓存技术分析[概念版]
在大部份情况下我们的网站都会使用数据库作为站点数据存储的容器。当你执行一个SQL查询时,典型的处理过程是:连接数据库->准备SQL查询->发送查询到数据库->取得数据库返回结果->关闭数据库连接。但数据库中有些数据是完全静态的或不太经常变动的,缓存系统会通过把SQL查询的结果缓存到一个更快的存储系统中存储,从而避免频繁操作数据库而很大程度上提高了程序执行时间,而且缓存查询结果也允许你后期处理。
普遍使用的缓存技术
数据缓存:这里所说的数据缓存是指数据库查询缓存,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件 中,以后同样的查询结果就直接从缓存文件中获得。
页面缓存:
每次访问页面的时候,都会先检测相应的缓存页面文件是否存在,如果不存在,就连接数据库,得到数据,显示页面并同时生成缓存页面文件,这样下次访问的时候页面文件就发挥作用了。(模板引擎和网上常见的一些缓存类通常有此功能)
内存缓存:
在里就不介绍了,不是本文所要讨论的,只简单提一下:
Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。
dbcached 是一款基于 Memcached 和 NMDB 的分布式 key-value 数据库内存缓存系统。
以上的缓存技术虽然能很好的解决频繁查询数据库的问题,但其缺点在在于数据无时效性,下面我给出我在项目中常用的方法:
时间触发缓存:
检查文件是否存在并且时间戳小于设置的过期时间,如果文件修改的时间戳比当前时间戳减去过期时间戳大,那么就用缓存,否则更新缓存。
设定时间内不去判断数据是否要更新,过了设定时间再更新缓存。以上只适合对时效性要求不高的情况下使用 ,否则请看下面。
内容触发缓存:
当插入数据或更新数据时,强制更新缓存。
在这里我们可以看到,当有大量数据频繁需要更新时,最后都要涉及磁盘读写操作。怎么解决呢?我在日常项目中,通常并不缓存所有内容,而是缓存一部分不经常变的内容来解决。但在大负荷的情况下,最好要用共享内存做缓存系统。
到这里PHP缓存也许有点解决方案了,但其缺点是,因为每次请求仍然要经过PHP解析,在大负荷的情况下效率问题还是比效严重,在这种情况下,也许会用到静态缓存。
静态缓存
这里所说的静态缓存是指HTML缓存,HTML缓存一般是无需判断数据是否要更新的,因为通常在使用HTML的场合一般是不经常变动内容的页面。数据更新的时候把HTML也强制更新一下就可以了。
其实一个缓存系统涉及的问题是比较多的,我在这里只介绍一下我平时的缓存思路,并没有介绍利用软件来实现缓存和写出具体代码。
from: http://www.moke8.com/article-16788-1.html