PHP如何解决网站大流量与高并发的问题


Posted in PHP onJune 25, 2011

首先,确认服务器硬件是否足够支持当前的流量。

普通的P4服务器一般最多能支持每天10万独立IP,如果访问量比这个还要大,
那么必须首先配置一台更高性能的专用服务器才能解决问题

,否则怎么优化都不可能彻底解决性能问题。

其次,优化数据库访问。

前台实现完全的静态化当然最好,可以完全不用访问数据库,不过对于频繁更新的网站,
静态化往往不能满足某些功能。

缓存技术就是另一个解决方案,就是将动态数据存储到缓存文件中,动态网页直接调用
这些文件,而不必再访问数据库,WordPress和Z-Blog都大量使用这种缓存技术。我
自己也写过一个Z-Blog的计数器插件,也是基于这样的原理。

如果确实无法避免对数据库的访问,那么可以尝试优化数据库的查询SQL.避免使用
Select * from这样的语句,每次查询只返回自己需要的结果,避免短时间内的大
量SQL查询。

第三,禁止外部的盗链。

外部网站的图片或者文件盗链往往会带来大量的负载压力,因此应该严格限制外部对
于自身的图片或者文件盗链,好在目前可以简单地通过refer来控制盗链,Apache自
己就可以通过配置来禁止盗链,IIS也有一些第三方的ISAPI可以实现同样的功能。当
然,伪造refer也可以通过代码来实现盗链,不过目前蓄意伪造refer盗链的还不多,
可以先不去考虑,或者使用非技术手段来解决,比如在图片上增加水印。

第四,控制大文件的下载。

大文件的下载会占用很大的流量,并且对于非SCSI硬盘来说,大量文件下载会消耗
CPU,使得网站响应能力下降。因此,尽量不要提供超过2M的大文件下载,如果需要
提供,建议将大文件放在另外一台服务器上。

第五,使用不同主机分流主要流量

将文件放在不同的主机上,提供不同的镜像供用户下载。比如如果觉得RSS文件占用
流量大,那么使用FeedBurner或者FeedSky等服务将RSS输出放在其他主机上,这
样别人访问的流量压力就大多集中在FeedBurner的主机上,RSS就不占用太多资源了。

第六,使用流量分析统计软件。

在网站上安装一个流量分析统计软件,可以即时知道哪些地方耗费了大量流量,哪些页
面需要再进行优化,因此,解决流量问题还需要进行精确的统计分析才可以。我推荐使
用的流量分析统计软件是Google Analytics(Google分析)。我使用过程中感觉其
效果非常不错,稍后我将详细介绍一下Google Analytics的一些使用常识和技巧。

PHP 相关文章推荐
测试您的 PHP 水平的题目
May 30 PHP
php empty() 检查一个变量是否为空
Nov 10 PHP
关于IIS php调用com组件的权限问题
Jan 11 PHP
简单的cookie计数器实现源码
Jun 07 PHP
php include和require的区别深入解析
Jun 17 PHP
浅析php面向对象public private protected 访问修饰符
Jun 30 PHP
php的数组与字符串的转换函数整理汇总
Jul 18 PHP
PHP单链表的实现代码
Jul 05 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
May 29 PHP
PHP使用redis消息队列发布微博的方法示例
Jun 22 PHP
Yii框架视图、视图布局、视图数据块操作示例
Oct 14 PHP
laravel model模型定义实现开启自动管理时间created_at,updated_at
Oct 17 PHP
session在PHP大型web应用中的使用
Jun 25 #PHP
php URL跳转代码 减少外链
Jun 25 #PHP
php session安全问题分析
Jun 24 #PHP
使用PHP实现二分查找算法代码分享
Jun 24 #PHP
PHP求最大子序列和的算法实现
Jun 24 #PHP
php中转义mysql语句的实现代码
Jun 24 #PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
Jun 24 #PHP
You might like
用PHP调用数据库的存贮过程
2006/10/09 PHP
php 不使用js实现页面跳转
2014/02/11 PHP
php实现数组筛选奇数和偶数示例
2014/04/11 PHP
PHP代码实现爬虫记录――超管用
2015/07/31 PHP
php的instanceof和判断闭包Closure操作示例
2020/01/26 PHP
javascript基础知识大集锦(二) 推荐收藏
2011/01/13 Javascript
javascript 学习笔记(六)浏览器类型及版本信息检测代码
2011/04/08 Javascript
html a标签-超链接中confirm方法使用介绍
2013/01/04 Javascript
jquery 选取方法都有哪些
2014/05/18 Javascript
javascript中定义类的方法详解
2015/02/10 Javascript
js改变Iframe中Src的方法
2015/05/05 Javascript
javascript设置和获取cookie的方法实例详解
2016/01/05 Javascript
浅谈JS使用[ ]来访问对象属性
2016/09/21 Javascript
jquery插入兄弟节点的操作方法
2016/12/07 Javascript
Angularjs中使用layDate日期控件示例
2017/01/11 Javascript
vue如何解决循环引用组件报错的问题
2018/09/22 Javascript
Echart折线图手柄触发事件示例详解
2018/12/16 Javascript
在微信小程序中使用图表的方法示例
2019/04/25 Javascript
基于JS实现前端压缩上传图片的实例代码
2019/05/14 Javascript
javascript数组元素删除方法delete和splice解析
2019/12/09 Javascript
小程序开发之模态框组件封装
2020/04/23 Javascript
Python学习小技巧之列表项的拼接
2017/05/20 Python
对python使用http、https代理的实例讲解
2018/05/07 Python
python中map的基本用法示例
2018/09/10 Python
Python面向对象程序设计之类的定义与继承简单示例
2019/03/18 Python
python os模块简单应用示例
2019/05/23 Python
Pyqt清空某一个QTreeewidgetItem下的所有分支方法
2019/06/17 Python
anaconda中更改python版本的方法步骤
2019/07/14 Python
python多线程分块读取文件
2019/08/29 Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
2020/07/02 Python
Python类绑定方法及非绑定方法实例解析
2020/10/09 Python
业务员岗位职责
2013/11/16 职场文书
会计专业导师推荐信
2014/03/08 职场文书
大学生党员自我评价范文
2014/04/09 职场文书
写作之关于描写老人的好段摘抄
2019/11/14 职场文书
Python还能这么玩之用Python做个小游戏的外挂
2021/06/04 Python