热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

高性能电商平台外贸电商系统高负载高并发,高效,高速,分布,高性能电商系统-PHP源码

高性能电商平台外贸电商系统高负载高并发,高效,高速,分布,高性能电商系统

高性能电商平台 外贸电商系统 高负载高并发,高效,高速,分布,高性能 电商系统
有了以下各种技术与优化,再也不为丢单而烦恼;用了此系统老板您赚钱就可高枕无忧啦!

核心特点如下:
数据库读写分离加速,memcached 缓冲加速,HTML静态页面加速

图片加水印,图片服务器分离,图片支持CDN,镜像服务器DNS轮循

多语言支持,多货币支持

订单报表统计分析,产品价格优惠处理

可灵活配置页面布局,多服务器负载均衡布局

订单批量打印,订单导出,数据分析导出,安全性高可靠性强,各种细节的优化处理

演示前台:http://demo.hecart.com/
演示后台账号:demo
演示后台密码:demo
演示后台:http://dadm.hecart.com/

网站结构采用:LINUX + NGINX + PHP + MYSQL + MEMCACHE

1. [文件] index.php

get_data();
if (!empty($html))
{
	exit($html);
}

//Startup
require(DIR_ROOT . '/system/startup.php');

//Application Classes
require(DIR_ROOT . '/system/library/customer.php');
require(DIR_ROOT . '/system/library/affiliate.php');
require(DIR_ROOT . '/system/library/currency.php');
require(DIR_ROOT . '/system/library/tax.php');
require(DIR_ROOT . '/system/library/weight.php');
require(DIR_ROOT . '/system/library/length.php');
require(DIR_ROOT . '/system/library/cart.php');

//Registry
$registry = new Registry();

//Loader
$loader = new Loader($registry);
$registry->set('load', $loader);

//Config
$cOnfig= new Config();
$mem_cls = new modules_mem();
$registry->set('config', $config);

$store_info = get_store_info($mem_cls);
if (empty($store_info))
{
	$config->set('config_store_id', 0);
	$config->set('config_url', 'http://' . DOMAIN_NAME . '/');
	$config->set('config_ssl', 'https://' . DOMAIN_NAME . '/');
}
else
{
	$config->set('config_store_id', $store_info['store_id']);
}

//Settings
$res = $mem_cls->mem_sql("SELECT * FROM " . DB_PREFIX . "setting WHERE store_id = " . intval($config->get('config_store_id')), DB_GET_ALL);
foreach ($res as $setting)
{
	$config->set($setting['key'], ($setting['serialized']) ? unserialize($setting['value']) : $setting['value']);
}

//Url
$url = new Url($config->get('config_url'), $config->get('config_use_ssl') ? $config->get('config_ssl') : $config->get('config_url'));
$registry->set('url', $url);

//Log
$log = new Log($config->get('config_error_filename'));
$registry->set('log', $log);

//Error Handler
function error_handler($errno, $errstr, $errfile, $errline)
{
	global $log, $config;
	switch ($errno)
	{
		case E_NOTICE:
		case E_USER_NOTICE:
			$error = 'Notice';
			break;
		case E_WARNING:
		case E_USER_WARNING:
			$error = 'Warning';
			break;
		case E_ERROR:
		case E_USER_ERROR:
			$error = 'Fatal Error';
			break;
		default:
			$error = 'Unknown';
			break;
	}

	if ($config->get('config_error_display'))
	{
		echo '' . $error . ': ' . $errstr . ' in ' . $errfile . ' on line ' . $errline . '';
	}

	if ($config->get('config_error_log'))
	{
		$log->write('PHP ' . $error . ':  ' . $errstr . ' in ' . $errfile . ' on line ' . $errline);
	}

	return true;
}

set_error_handler('error_handler');

//Request
$request = new Request();
$registry->set('request', $request);

//Response
$respOnse= new Response();
$response->addHeader('Content-Type: text/html; charset=utf-8');
$response->setCompression($config->get('config_compression'));
$registry->set('response', $response);

//Session
$session = new wcore_session(SESSION_SAVE_TYPE);
$registry->set('session', $session);

//Language Detection
$languages = get_languages($mem_cls);
$code      = $config->get('config_language');
if (isset($request->COOKIE['language']) && isset($languages[$request->COOKIE['language']]) && $languages[$request->COOKIE['language']]['status'])
{
	$code = $request->COOKIE['language'];
}
else //自动检测语言
{
	if (isset($request->server['HTTP_ACCEPT_LANGUAGE']) && ($request->server['HTTP_ACCEPT_LANGUAGE']))
	{
		$browser_languages = explode(',', $request->server['HTTP_ACCEPT_LANGUAGE']);
		foreach ($browser_languages as $browser_language)
		{
			foreach ($languages as $key => $value)
			{
				if ($value['status'])
				{
					$locale = explode(',', $value['locale']);
					if (in_array($browser_language, $locale))
					{
						$code = $key;
					}
				}
			}
		}
	}
	$request->COOKIE['language'] = $code;
	wcore_utils::set_COOKIE('language', $code, 365);
}
$config->set('config_language_id', $languages[$code]['language_id']);
$config->set('config_language', $languages[$code]['code']);

//Language
$language = new Language($languages[$code]['directory']);
$language->load($languages[$code]['filename']);
$registry->set('language', $language);

//Document
$registry->set('document', new Document());

//Customer
$registry->set('customer', new Customer($registry));

//Affiliate
$registry->set('affiliate', new Affiliate($registry));
if (isset($request->get['tracking']) && !isset($request->COOKIE['tracking']))
{
	wcore_utils::set_COOKIE('tracking', $request->get['tracking'], 365);
}

//Currency
$registry->set('currency', new Currency($registry));

//Tax
$registry->set('tax', new Tax($registry));

//Weight
$registry->set('weight', new Weight($registry));

//Length
$registry->set('length', new Length($registry));

//Cart
$registry->set('cart', new Cart($registry));

//Encryption
$registry->set('encryption', new Encryption($config->get('config_encryption')));

//Front Controller
$cOntroller= new Front($registry);

//Router
$action = new Action(isset($request->get['route']) ? $request->get['route'] : 'common/home');

//Dispatch
$controller->dispatch($action, new Action('error/not_found'));

//Output
if (defined('WCORE_SPEED'))
{
	$html = $response->render();
	$speed->set_data($html);
	unset($speed);
	echo($html);
}
else
{
	$response->output();
}
?>

2. [文件] setting.php

 hoojar studio
 *
 * 模块: $Id: config.php 1 2012-11-20 05:55:12Z Administrator $
 * 简述: 网站各大参数设置 (注此文件需COPY一份到此目录下并改名为setting.php)
 * 作者: woods·zhang  ->  hoojar@163.com
 *
 * 版权 2006-2013, 慧佳工作室拥有此系统所有版权等知识产权
 * Copyright 2006-2013, Hoojar Studio All Rights Reserved.
 *
 * 设置出错等级
 */
mb_internal_encoding('UTF-8');								//系统使用默认字符集为UTF-8
ini_set('error_reporting',	E_ALL | E_STRICT);				//出错等级
ini_set('display_errors',	isset($_GET['error']) ? 1 : 1);	//是否显示出错信息0关1开
ini_set('date.timezone',	'Asia/Shanghai');				//设置时区

/**
 * 执行文件的文件名与文件路径
 */
$pinfo = pathinfo($_SERVER['SCRIPT_FILENAME']);
define('EXEC_PATH',	$pinfo['dirname']);						//执行文件所在的全路径
define('EXEC_FILE',	$pinfo['basename']);					//执行文件的名称含扩展名
define('EXEC_EXT',	$pinfo['extension']);					//执行文件的扩展名
define('EXEC_NAME',	strtok(EXEC_FILE, '.'));				//执行文件名不含扩展名
unset($pinfo);

/**
 * 图片与JS本要加载或CDN加载开关
 */
define('USE_ISLOCAL_IMG',		0);		//是否使用本机静态文件(图片)
define('USE_ISLOCAL_JS2CSS',	1);		//是否使用本机静态文件(JS,CSS)

/**
 * 提升浏览者速度
 */
define('COMPRESS_HTML',		true);		//是否压缩HTML,为真且不出错展示关闭则对HTML进行压缩(注:如果代码写得较乱者,压缩可能会无法展示)
define('COMPRESS_JS2CSS',	true);		//是否压缩JS与CSS代码,为真且不出错展示关闭则对HTML进行压缩(注:如果代码写得较乱者,压缩可能会导致无法正常执行)

/**
 * 系统常规设置
 */
define('PRICE_ROUND',		-1);		//价格四舍五入,小于0则不4舍5入,大于等于0则4舍5入到几位小数
define('SESSION_SAVE_TYPE',	'db');		//SESSION采取哪种类型与存储长度:db(max:65535) mdb(max:255) mem(max:unlimit) file(max:unlimit) dir(max:unlimit)

define('SPEED_DATA',		true);		//是否启用加速数据服务将HTML缓冲起来或生成静态文件
define('SPEED_DATA_EXPIRE',	30);		//加速数据有效期(单位分钟)

define('MEM_CACHED',		true);		//定义MEMCACHED是否有效
define('MEM_ASYN_SQL_NUM',	100);		//当异步存储了SQL条数达到此数就执行SQL

define('SQL_DEBUG',			false);		//测试SQL调试开关(true or false)
define('SQL_ERROR_FOR_TIP',	false);		//SQL语句执行出错用wcore_tip来展示

define('LOGIN_ERR_NUM',		3);			//登录出错最多可多少次后就锁帐号
define('LOGIN_PASS_HOUR',	6);			//登录出错间隔多少小时内不能登录

define('SITE_MD5_KEY',		'*#6@9');	//网站MD5密匙
define('IMAGES_PATH',		'/img/');	//产品图片相对于www目录而言的相对文件路径
define('DOMAIN_NAME',		isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'hecart.com');//当前域名

/**
 * HTTP URL
 */
define('HTTP_STORE',	'http://w.hecart.com/');		//商城HTTP主页地址
define('HTTPS_STORE',	'https://w.hecart.com/');		//商城HTTPS主页地址
define('DIR_IMAGE',		DIR_ROOT . '/www' . IMAGES_PATH);	//商品图片存储路径

/**
 * 数据库读取类型
 */
define('DB_PREFIX',		'he_');					//数据库表前缀
define('DB_GET_ONE',	'fetch_one');			//获取一个数据
define('DB_GET_ROW',	'fetch_row');			//获取一条数据
define('DB_GET_ALL',	'fetch_all');			//获取多条数据
define('DB_GET_PAIRS',	'fetch_pairs');			//获取一对数据

/**
 * 数据库主库,一般用于写入数据
 */
$db_server						= array();		//数据库服务器连接名称
$db_server['master']['dbtype']	= 'mysqli';		//数据库连接类型
$db_server['master']['host']	= 'localhost';	//数据库服务器主机
$db_server['master']['port']	= 3306;			//数据库服务器主机端口
$db_server['master']['user']	= 'root';		//数据库用户名
$db_server['master']['pwd']		= '123456';		//数据库密码
$db_server['master']['dbname']	= 'hecart';		//数据库名
$db_server['master']['charset']	= 'utf8';		//数据库字符集
$db_server['master']['pconnect']= false;		//是否持续链接数据库

/**
 * 数据库从库,一般用于只读取数据
 */
$db_server['slave']['dbtype']	= 'mysqli';		//数据库连接类型
$db_server['slave']['host']		= 'localhost';	//数据库服务器主机
$db_server['slave']['port']		= 3306;			//数据库服务器主机端口
$db_server['slave']['user']		= 'root';		//数据库用户名
$db_server['slave']['pwd']		= '123456';		//数据库密码
$db_server['slave']['dbname']	= 'hecart';		//数据库名
$db_server['slave']['charset']	= 'utf8';		//数据库字符集
$db_server['slave']['pconnect']	= false;		//是否持续链接数据库
define('DB_SERVERS', json_encode($db_server));
unset($db_server);

/**
 * 缓冲MEMCACHED服务器
 */
define('MEM_USE',		false);			//是否开启使用MEMCACHED服务器
define('MEM_PORT',		11211);			//MEMCACHED单机服务器端口号
define('MEM_EXPIRE',	30);			//MEMCACHED服务器存储数据的有效期,以分钟为单位
define('MEM_PREFIX',	DOMAIN_NAME);	//存储MEMCACHED数据时KEY的前缀
$mem_servers	= array();
$mem_servers[]	= '127.0.0.1:11211';	//MEMCACHED服务器主机1:端口
$mem_servers[]	= '127.0.0.1:11211';	//MEMCACHED服务器主机2:端口
$mem_servers[]	= '127.0.0.1:11211';	//MEMCACHED服务器主机3:端口
define('MEM_SERVERS', json_encode($mem_servers));
unset($mem_servers);

/**
 * 网站图片主机域名(转换图片地址为网站实际对应的地址或CDN地址)
 */
$img_urls	= array();
$img_urls[]	= 'http://img1.hecart.com';	//图片主机域名1
$img_urls[]	= 'http://img2.hecart.com';	//图片主机域名2
$img_urls[]	= 'http://img3.hecart.com';	//图片主机域名3
define('IMG_URLS', json_encode($img_urls));
unset($img_urls);

/**
 * SMTP服务器
 */
$smtp_server		= array();
$smtp_server['host']= 'mail.hecart.com';	//SMTP服务器主机
$smtp_server['port']= 25;					//SMTP服务器端口
$smtp_server['user']= 'getpwd@hecart.com';	//SMTP登录用户账号
$smtp_server['upwd']= 'pwd!(*#489';			//SMTP登录用户密码
$smtp_server['cset']= 'utf-8';				//SMTP邮件内容编码
define('SMTP_SERVER', json_encode($smtp_server));
unset($smtp_server);
?>

推荐阅读
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 在Android中解析Gson解析json数据是很方便快捷的,可以直接将json数据解析成java对象或者集合。使用Gson解析json成对象时,默认将json里对应字段的值解析到java对象里对应字段的属性里面。然而,当我们自己定义的java对象里的属性名与json里的字段名不一样时,我们可以使用@SerializedName注解来将对象里的属性跟json里字段对应值匹配起来。本文介绍了使用@SerializedName注解解析json数据的方法,并给出了具体的使用示例。 ... [详细]
  • express工程中的json调用方法
    本文介绍了在express工程中如何调用json数据,包括建立app.js文件、创建数据接口以及获取全部数据和typeid为1的数据的方法。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 负载均衡_Nginx反向代理动静分离负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分
    nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • nginx+多个tomcat
    学习nginx的时候遇到的问题:nginx怎么部署两台tomcat?upstream在网上找的资源,我在nginx配置文件(nginx.conf)中添加了两个server。结果只显 ... [详细]
  • 14亿人的大项目,腾讯云数据库拿下!
    全国人 ... [详细]
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • 构建LNMP架构平台
    LNMP架构的组成:Linux、Nginx、MySQL、PHP关于NginxNginx与apache的作用一样,都是为了搭建网站服务器,由俄罗斯人lgorsysoev开发,其特点是 ... [详细]
  • nginx 反向代理proxy参数讲解
    ![](http:i2.51cto.comimagesblog20180805c32a728954d93ee2a4e4fb59c150a15b.png?x-oss-processi ... [详细]
  • php网站设计实验报告,php网站开发实训报告
    本文目录一览:1、php动态网站设计的关键技术有哪些软件,及搭建步骤需要哪些页面,分别完成 ... [详细]
  • Nginxgaodaima.comnginx属于七层架构,支持的是http协议,本身对tcp协议没有支持。所以不能代理mysql等实现负载均衡。但是lvs这个东西不熟悉,主要是公司 ... [详细]
author-avatar
阁下贵姓
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有