文档章节

PHP控制站点并发

有些服务器
 有些服务器
发布于 2015/10/14 20:10
字数 506
阅读 65
收藏 1

一般来说,一个项目中总是会有一些较难处理的业务,比如业务复杂花样繁多的搜索,使用搜索系统如sphinx,lucence等来处理的话,数据源的若是变化过快(如顶、踩、浏览数之类),则首先推数据的频率就较难衡量,另外无法精确搜索或排序。所以一般情况下的做法是通过DB进行搜索,并且除了尽量将业务分解到程序层面外,还会在DB前加一层cache。但是这样做也有不少已知的弊端:

1、实际上很多业务无法放到普通的PHP中处理,如一些较复杂的排序、筛选,通过普通的PHP来实现的话效率还不如MYSQL。

2、cache的命中率也不好保证,特别是对一些使用关键词进行查询的业务,关键词变化太多。


若是遇到恶意刷的话,DB服务器容易直接挂掉,因此我们可以在程序层面上加一层限制器,限制并发数,该限制器具备以下特点:

1、高效(废话么,否则直接刷限制器就刷爆了)。现在是使用memcache进行原子操作计数,可以扩展成使用其他方法。

2、精确到action层。可以单独限制单个页面。

3、方便。见仁见智吧

4、成本低廉。包括研发成本与硬件成本。


根据压测,原先只能100并发的搜索功能,限制100后,压测800结果正常。


使用方法如下:


<?php

    /**

     * 搜索

     */

    public function search(){

        //增加计数器功能,超过次数则返回系统繁忙

        $viewlimiter = Library::load('viewlimiter');

        //访问限制器的名称,请用controller+action,尽量单个页面保持唯一

        $limitName = 'search_search';

        //最多同时访问数

        $limit = 100;

        //若是超过数量则直接返回

        if(!$viewlimiter->check($limitName, $limit)) {

            ajaxOutput(0, $this->lang->line('multi_search_limit'));

        }


        /*----复杂变态的业务逻辑-----*/

        $xxxModel->search($params);

    }

    //end func

?>


© 著作权归作者所有

共有 人打赏支持
有些服务器
粉丝 4
博文 49
码字总数 86607
作品 0
南昌
apache限制并发数,IP,带宽设置

给大家推荐两个Apache模块,一个是modvhostlimit,用来限制请求并发数,一个是modlimitipconn,用来控制 Apache的并发联接数,通过该模块可以限制同一来源IP的并发联接数。另一个模块是bwmod...

欣儿
2015/01/09
0
2
从分布式数据库结构入手讲解其前世今生

由于分布式数据库克服了集中式数据库的许多缺点,并且自然地适应于许多单位地理上分散而逻辑上统一的组织结构,因此,20多年以来从理论到实践都得到了迅速发展,并取得了决定性成果。   分...

Oscarfff
2016/06/10
294
0
web压力测试,本机压的结果和内网机压的结果qps差不多,但是php进程使用度却不一样?

压力测试,使用web服务器本机,ab测试, ab -c 1000 -n 10000 http://www.xxxx.com/tp.php 结果为 Requests per second: 463.98 [#/sec] (mean) 压力测试期间观察php-fpm状态页,显示空闲进程...

玖伍陈海天
2017/06/26
94
4
十个免费的WEB压力测试工具

本文列举了是十个免费工具,可以用来进行Web的负载/压力测试的。这样你就可以知道你的服务器以及你的WEB应用能够扛得住多少的并发量,以及网站性能。 0. Grinder � Grinder是一个开源的JVM...

Jay_Wei
2015/12/27
119
0
十个免费的 Web 压力测试工具

本文列举了是十个免费工具,可以用来进行Web的负载/压力测试的。这样你就可以知道你的服务器以及你的WEB应用能够扛得住多少的并发量,以及网站性能。 0. Grinder – Grinder是一个开源的JVM...

oschina
2012/06/25
242.1K
18

没有更多内容

加载失败,请刷新页面

加载更多

使用Newtonsoft将DataTable转Json

使用Newtonsoft将DataTable转Json Newtonsoft提供的将DataTable转成Json: /// <summary> /// DataTable转Json /// </summary> /// <param name="dt"></param> /// <ret......

DemonsI
5分钟前
0
0
centos7安装zookeeper3.4.6

注:zookeeper充当注册中心 下载地址 http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.6/ 单机 下载完成后,将安装包上传值服务器,解压 tar xvzf zookeeper-3.4.6.tar.gz 进入解...

码代码的小司机
6分钟前
0
0
136. Single Number

136. Single Number 题意:一个数组中所有数字都是两两相同,只有一个数字是单独的,求出这个数字的值。 很简单的题,使用异或就能处理。 异或介绍:bit位上的值不同,异或后,值为1.否则为0...

117
8分钟前
0
0
Hash和HashCode深入理解

目录介绍 1.Hash的作用介绍 1.1 Hash的定义 1.2 Hash函数特性 1.3 Hash的使用场景 2.如何判断两个对象相等 2.1 判断两个字符串 2.2 判断两个int数值 2.3 其他基本类型 3.HashCode深入分析 3....

潇湘剑雨
14分钟前
0
0
ecshop 漏洞如何修复 补丁升级与安全修复详情

目前ecshop漏洞大面积爆发,包括最新版的ecshop 3.0,ecshop 4.0,ecshop2.7.3全系列版本都存在着高危网站漏洞,导致网站被黑,被篡改,被挂马,许多商城系统深受其漏洞的攻击,给商城的运营者...

网站安全
14分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部