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生成html分页列表的代码
Mar 18 PHP
用php将任何格式视频转为flv的代码
Sep 03 PHP
Wordpress php 分页代码
Oct 21 PHP
php防止SQL注入详解及防范
Nov 12 PHP
Windows中使用计划任务自动执行PHP程序实例
May 09 PHP
destoon之一键登录设置
Jun 21 PHP
ThinkPHP验证码和分页实例教程
Aug 22 PHP
PHP生成条形图的方法
Dec 10 PHP
PHP获取指定月份第一天和最后一天的方法
Jul 18 PHP
java模拟PHP的pack和unpack类
Apr 13 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
Aug 25 PHP
thinkphp5框架扩展redis类方法示例
May 06 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
第三节 定义一个类 [3]
2006/10/09 PHP
PHP 数据库树的遍历方法
2009/02/06 PHP
解析数组非数字键名引号的必要性
2013/08/09 PHP
php 使用fopen函数创建、打开文件详解及实例代码
2016/09/24 PHP
PHP实现大数(浮点数)取余的方法
2017/02/18 PHP
javascript 面向对象思想 附源码
2009/07/07 Javascript
基于jquery的网页SELECT下拉框美化代码
2010/10/28 Javascript
Js(JavaScript)中,弹出是或否的选择框示例(confirm用法的实例分析)
2013/07/09 Javascript
jQuery实现监控页面所有ajax请求的方法
2015/12/10 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
2016/02/16 Javascript
JQuery Dialog对话框 不能通过Esc关闭的原因分析及解决办法
2017/01/18 Javascript
详解Angular.js指令中scope类型的几种特殊情况
2017/02/21 Javascript
AngularJS双向绑定和依赖反转实例详解
2017/04/15 Javascript
vue中实现滚动加载更多的示例
2017/11/08 Javascript
详解nginx配置vue h5 history去除#号
2020/11/09 Javascript
在Django框架中伪造捕捉到的URLconf值的方法
2015/07/18 Python
Python脚本处理空格的方法
2016/08/08 Python
Python增量循环删除MySQL表数据的方法
2016/09/23 Python
Python实现返回数组中第i小元素的方法示例
2017/12/04 Python
解决python写入mysql中datetime类型遇到的问题
2018/06/21 Python
python实现将文件夹下面的不是以py文件结尾的文件都过滤掉的方法
2018/10/21 Python
对Python3之进程池与回调函数的实例详解
2019/01/22 Python
基于python3监控服务器状态进行邮件报警
2019/10/19 Python
python自动点赞功能的实现思路
2020/02/26 Python
python实现数据结构中双向循环链表操作的示例
2020/10/09 Python
详解python第三方库的安装、PyInstaller库、random库
2021/03/03 Python
static关键字的用法
2013/10/07 面试题
自立自强的名人事例
2014/02/10 职场文书
优秀本科生求职推荐信
2014/02/24 职场文书
音乐兴趣小组活动总结
2014/07/07 职场文书
纪念九一八事变演讲稿:勿忘国耻
2014/09/14 职场文书
小学生作文批改评语
2014/12/25 职场文书
患者身份识别制度
2015/08/06 职场文书
vue-cropper插件实现图片截取上传组件封装
2021/05/27 Vue.js
Pandas加速代码之避免使用for循环
2021/05/30 Python
基于PyQT5制作一个桌面摸鱼工具
2022/02/15 Python