关于查询优化的问题~ 第一个问题不晓得第二个,加sleep(1)没用,一般是限制二次查询的时间间隔。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第一个问题:弄个文本缓存查询结果,如果是同样的查询条件直接从文本读取。第二个问题解决方法很多,比如用SESSION或是COOKIE存进去lastSearch时间,当他再次查询时比较一下时间差。也可以得到他的IP地址,如果查询过多,屏蔽其IP查询。不是APACHE,是PHP的屏蔽,弄个文本存入恶意查询的IP,查询之前判断一下。 "这种情况一般是不适合建立索引的",不知道你这个结论是怎么得来的"防止有人恶意频繁查询",可以用cookie,记录上次查询的时间,和现在的时间相比对。 TO: feel8(准备早起的鸟) 如果对方连续刷新,用sleep(1)是否可以起到最多每秒一次?TO:mistjin(9527@孙燕姿资深粉丝) 文本缓存是个好主义! SESSION记录的办法我想到过,就是觉得有些麻烦~TO: ccterran(iwind) SQL查询优化基础上来的(不知你的星怎么来的);COOKIE在客户端,防止恶意攻击的话明显不明智。 我晕,我倒是长见识了,佩服佩服。按照你的说法:数据少是没有必要建索引的,数据多又不适合建索引,那说明索引就是没有用的,那我们还要它干什么!?不明白,请指教。sleep(1)更不理智。我只是说原理。 连续刷新用sleep只是让他的多次查询都停一秒,一秒后继续执行查询。该是多少次就是多少次。用session限制,拒绝一定时间内的多次查谒请求,减少数据库负担。like '%keyword%' 用索引好像没用,具体怎么查更好不清楚。 既然需要提高效率,必须避免like操作,实在不行,也要提出关键字来检索! TO:ccterran(iwind)我没说不用索引是因为数据多,而是带有左右匹配的LIKE语句不适合做索引~TO: feel8(准备早起的鸟) 还是不大理解,假如用了sleep(1),一个人刷新,一分钟刷新了1000次(注意是一分钟内),那么是不是要等到10多分钟后,服务器那边还在运行他的查询?我的理解是,他查询了一次,在1秒中内如果再运行了一次查询的话,上一次的查询就在SLEEP没结束时就中断了。可能我的想法不对,但如果真这样的话,SLEEP还是起很大作用的。 sleep(1)只是让当前的php进(线)程停止一秒后再运行“我的理解是,他查询了一次,在1秒中内如果再运行了一次查询的话,上一次的查询就在SLEEP没结束时就中断了。”你的这个理解是错误的每一次刷新浏览器都将产生一个http请求虽然浏览器不再等待前次刷新的结果,但前次的请求已经发出了web服务器在收到http请求后会产生一个php进(线)程来处理请求的内容只是前次的http请求已经断开了,处理的结果已经无处输出了。所以php中有一开关,用于控制当连接中断后程序是否继续进行据此,使用sleep函数不能解决这个问题。要使用session才行 TO:xuzuning(唠叨) “所以php中有一开关,用于控制当连接中断后程序是否继续进行”,这是一个KEYWORD,一般的服务器这一开关应该是不继续进行的吧(也没有继续进行的必要)~ 就算是记录上次查询时间,我觉得SESSION和COOKIE同样脆弱,客户端很容易新开无数个会话~ 用session不行吗? 用cookie的话不按正常方式提交表单还是可以刷。 SESSION一样,举个例子,新开个IE窗口,里面的SESSION数据全空~ 既然这样,操纵Session,把Session数据保存到数据库里面可以了吧! 模拟提交页面问题 关于nginx的限制线程问题 请问有没有将html代码转换输出unicode <===foreach问题===> 连接mysql时unexpected T_ENCAPSED_AND_WHITESPACE错误 求php更新datetime字段的语句 有谁能搞出这些软件的下载地址吗?想不明白这防盗技术 做过域名查询的朋友,能讲一下域名查询的原理吗? 问个简单 日历程序?? 我想问问!!$符号代表什么??为有些前面有,有些没有?? php 能否实现这样的全局变量?
如果对方连续刷新,用sleep(1)是否可以起到最多每秒一次?TO:mistjin(9527@孙燕姿资深粉丝)
文本缓存是个好主义! SESSION记录的办法我想到过,就是觉得有些麻烦~TO: ccterran(iwind)
SQL查询优化基础上来的(不知你的星怎么来的);COOKIE在客户端,防止恶意攻击的话明显不明智。
按照你的说法:数据少是没有必要建索引的,数据多又不适合建索引,那说明索引就是没有用的,那我们还要它干什么!?不明白,请指教。sleep(1)更不理智。我只是说原理。
我没说不用索引是因为数据多,而是带有左右匹配的LIKE语句不适合做索引~TO: feel8(准备早起的鸟)
还是不大理解,假如用了sleep(1),一个人刷新,一分钟刷新了1000次(注意是一分钟内),那么是不是要等到10多分钟后,服务器那边还在运行他的查询?我的理解是,他查询了一次,在1秒中内如果再运行了一次查询的话,上一次的查询就在SLEEP没结束时就中断了。可能我的想法不对,但如果真这样的话,SLEEP还是起很大作用的。
你的这个理解是错误的
每一次刷新浏览器都将产生一个http请求
虽然浏览器不再等待前次刷新的结果,但前次的请求已经发出了
web服务器在收到http请求后会产生一个php进(线)程来处理请求的内容
只是前次的http请求已经断开了,处理的结果已经无处输出了。
所以php中有一开关,用于控制当连接中断后程序是否继续进行据此,使用sleep函数不能解决这个问题。要使用session才行
“所以php中有一开关,用于控制当连接中断后程序是否继续进行”,这是一个KEYWORD,一般的服务器这一开关应该是不继续进行的吧(也没有继续进行的必要)~