求教:如何優化隨機廣告?
时间:2011-11-03
来源:互联网
在不同網頁中,以及同頁面不同位置,都能隨機顯示不相同的廣告,
不知道大家是如何做的了?
----------------------------------------------
我是把所有廣告代碼放到數據庫,每個頁面根據已顯示次數查詢,放到數組中。再在不同位置調用數組。
結果網頁好像是因為這個原因被暫停了。(超了CPU跟RAM)!
作者: devhp 发布时间: 2011-11-03
作者: binarie 发布时间: 2011-11-03
作者: devhp 发布时间: 2011-11-03
作者: binarie 发布时间: 2011-11-03
PHP code
$query = "SELECT * from ads order by show_n ASC LIMIT 0 , 4"; //這網頁有四個位置 mysql_query("SET NAMES 'UTF8'"); $rs = mysql_query($query,$link) or die("Query failed"); $rows = mysql_num_rows($rs); $ii =0; $ads = array(); while($line=mysql_fetch_array($rs,MYSQL_ASSOC)){ $ii +=1; $ads[$ii] =$line["bodys"]; $sql = "update ads set show_n=show_n+1 where id=".$line['id'];//將要顯示更新下顯示次數 mysql_query($sql,$link) or die("query db false!!!"); } mysql_free_result($rs); ?> 在四個廣告位置各放一個<? echo $ads[1]; ?>到<? echo $ads[4]; ?> 這樣會對MEM跟CPU會有很大影響嗎? 還是說應該在四個不同位置都查詢一次數據庫。還是應該用其它方法?
作者: devhp 发布时间: 2011-11-03
作者: devhp 发布时间: 2011-11-03
作者: aipai_leeyo 发布时间: 2011-11-03
作者: foolbirdflyfirst 发布时间: 2011-11-03
你的ads表有多少数据量?
目前只有三十多條吧
作者: devhp 发布时间: 2011-11-03
不用memcache的话,将数组写到php文件缓存吧。
大大有文件緩存的例子嗎?如果不方便我自己去找找
作者: devhp 发布时间: 2011-11-03
然后每次访问页面:
1、打开文件并设置锁定(fopen,flock LOCK_EX);
2、读出文件内容,反序列化(unserialize)为数组变量;
3、根据需要显示的数量,循环执行:用array_shift取出并删除数组的第一个元素,作为将要显示的广告,并将该元素用array_push重新插入到数组末尾(就是把开头的元素挪到结尾,类似于循环使用的意思);
4、序列化,保存到目标文件。
作者: binarie 发布时间: 2011-11-03
你可以把所有广告都读进一个数组,serialize序列化保存到某个文件里。
那這樣子是不是每打開一次網頁就得執行一次這個過程?這樣不會很費資源嗎?
作者: devhp 发布时间: 2011-11-03
作者: binarie 发布时间: 2011-11-03
读写一次这种文件的性能影响很小。比更新每个广告的show_n效率高一些。
謝謝· 我找到一個serialize序列化缓存的例子,根據你的提示我去拼下代碼!
在這里謝謝你的幫忙先
作者: devhp 发布时间: 2011-11-03
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28