+ -
当前位置:首页 → 问答吧 → 頻繁使用數組跟file_get_contents是否會有CPU與內存有巨大影響

頻繁使用數組跟file_get_contents是否會有CPU與內存有巨大影響

时间:2011-11-03

来源:互联网

昨晚網站突然被空間商暫停了

大意是說CPU超用了。內存超用了。

PHP中主要用了數組來保存從數據庫中取得的廣告代碼。然後在不同的位置調用這個數據值

還有一個是file_get_contents一打開就會讀取來源網頁標題

請各位有經驗的大哥大姐們告訴我這兩個東西有CPU與內存是都比較大還是某個比較大?


關於隨機廣告問題另開一貼!

作者: devhp   发布时间: 2011-11-03

对CPU:需要等待I/O完成,如果是linux用top命令可以看到cpu实际占用率的很大一部分都在进行wa (等待IO),而且如果文件过大,会发生内存缺页等情况,造成CPU占用额外增加。
对内存:如果文件体积很大,从头到尾读入必然会占用内存,即使file_get_contents使用了内存映射技术,如果文件很小那么影响可能不大。

作者: binarie   发布时间: 2011-11-03

是 linux主機,TOP命令不會用,我先查查 

file_get_contents沒有使用内存映射技术,被GET網頁一般都不過十來K

作者: devhp   发布时间: 2011-11-03

如果是虚拟机的话,磁盘读写性能很鸡肋。
如果频繁读写,经常能看到飙到极限的情况。

有些主机商很缺德,用这种方式来忽悠用户。

作者: binarie   发布时间: 2011-11-03

就是這樣,我就用了這兩東西。就來信說CPU超10% 什麼MEM達到20%

大大你覺得在同一頁面用數組保存四組廣告代碼好還是查詢四次數據好?

作者: devhp   发布时间: 2011-11-03

广告代码部分对性能的影响应该很小。

“file_get_contents一打開就會讀取來源網頁標題”
我推测是这个的问题。

作者: binarie   发布时间: 2011-11-03

你的意思是使用了file_get_contents下载$_SERVER['HTTP_REFERER']页面?

作者: binarie   发布时间: 2011-11-03

如果一个脚本中用多个数组,且数组较大
使用后可以手动unset数组释放资源。

作者: ohmygirl   发布时间: 2011-11-03

引用 6 楼 binarie 的回复:
你的意思是使用了file_get_contents下载$_SERVER['HTTP_REFERER']页面?


對對是這樣的。我不清楚是file_get_contents費了資源還是我數據用太多了

作者: devhp   发布时间: 2011-11-03

引用 7 楼 ohmygirl 的回复:
如果一个脚本中用多个数组,且数组较大
使用后可以手动unset数组释放资源。


一個頁面只用一個數組,但幾乎所有的廣告都是這麼搞的。
剛才我發代碼在http://topic.csdn.net/u/20111103/12/5d1a7b74-c285-4586-8ed5-934312a808fb.html?32358

請大大幫忙一起指正下!

作者: devhp   发布时间: 2011-11-03

引用 8 楼 devhp 的回复:

引用 6 楼 binarie 的回复:
你的意思是使用了file_get_contents下载$_SERVER['HTTP_REFERER']页面?


對對是這樣的。我不清楚是file_get_contents費了資源還是我數據用太多了




file_get_contents 必须设置个超时的时间

作者: aipai_leeyo   发布时间: 2011-11-03

引用 10 楼 aipai_leeyo 的回复:

file_get_contents 必须设置个超时的时间


哦還可以設置超時。那我加上去試試

作者: devhp   发布时间: 2011-11-03

尤其是当REFERER所在的服务器网络链接可靠性不确定的时候,file_get_contents访问http资源相当影响性能。。

作者: binarie   发布时间: 2011-11-03

引用 12 楼 binarie 的回复:
尤其是当REFERER所在的服务器网络链接可靠性不确定的时候,file_get_contents访问http资源相当影响性能。。


哦這個改好了

作者: devhp   发布时间: 2011-11-03

这种方式不建议采用,这等于是处理用户请求的时候又打开了一个新的HTTP请求并且要阻塞等待返回。
如果目标服务器在同一数据中心或者访问速度稳定,那么可以接受。

如果不是,对服务器的资源消耗相当大。

作者: binarie   发布时间: 2011-11-03

引用 14 楼 binarie 的回复:
这种方式不建议采用,这等于是处理用户请求的时候又打开了一个新的HTTP请求并且要阻塞等待返回。
如果目标服务器在同一数据中心或者访问速度稳定,那么可以接受。

如果不是,对服务器的资源消耗相当大。


那還可以用什麼方式啊

作者: devhp   发布时间: 2011-11-03

这个的需求是什么?

作者: binarie   发布时间: 2011-11-03

引用 16 楼 binarie 的回复:
这个的需求是什么?


就是相當於自助流量交換的東西,所有來路都用file_get_contents提取了一次它的源碼。但沒有加上提到的超時!

作者: devhp   发布时间: 2011-11-03

相关阅读 更多