-
简单PHP把握站点并发数
添加时间:2013-5-29 点击量:一般来说,一个项目中老是会有一些较难处理惩罚的营业,比如营业错杂花样繁多的搜刮,应用搜刮体系如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
?>扩大话题:
文艺不是炫耀,不是花哨空洞的文字堆砌,不是一张又一张的逆光照片,不是将旅行的意义转化为名牌包和明信片的物质展示;很多时候它甚至完全不美——它嘶吼、扭曲,它会痛苦地抽搐,它常常无言地沉默。——艾小柯《文艺是一种信仰》
1、若是该营业被刷,可能导致正常用户无法查看内容。 -- 这个题目要解决只能是从体系层面去操纵,可见这边:http://johnsteven.blog.51cto.com/2523007/818209
2、限制数好能与缓存射中率相连络,必然局限内主动变革限制数,进步限制的精准度。 -- 这个后期可以进行研究,与缓存类相连络
3、按照办事器负载进步履态把握。 -- 涉及到底层及办事器权限,研究本钱较高,有爱好的话可以研究。
注:
本文只申明思路,具体代码因为一些原因临时不开放
