国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - PHP教程 - 關(guān)于PHP內(nèi)存溢出問題的解決方法

關(guān)于PHP內(nèi)存溢出問題的解決方法

2020-04-29 13:30PHP教程網(wǎng) PHP教程

本篇文章是對(duì)PHP內(nèi)存溢出問題的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下

一.內(nèi)存溢出解決方案
在做數(shù)據(jù)統(tǒng)計(jì)分析時(shí),經(jīng)常會(huì)遇到大數(shù)組,可能會(huì)發(fā)生內(nèi)存溢出,這里分享一下我的解決方案。還是用例子來說明這個(gè)問題,如下:
假定日志中存放的記錄數(shù)為500000條,那么解決方案如下:

復(fù)制代碼 代碼如下:

ini_set(‘memory_limit','64M'); //重置php可以使用的內(nèi)存大小為64M,一般在遠(yuǎn)程主機(jī)上是不能修改php.ini文件的,只能通過程序設(shè)置。注:在safe_mode(安全模式)下,ini_set失效
set_time_limit(600);//設(shè)置超時(shí)限制為6分鐘
$farr = $Uarr = $Marr = $IParr = $data = $_sub = array();
$spt = ”$@#!$”;
$root = ”/Data/webapps/VisitLog”;
$path = $dpath = $fpath = NULL;
$path = $root.”/”.date(“Y-m”,$timestamp);
$dpath = $path.”/”.date(“m-d”,$timestamp);
for($j=0;$j<24;$j++){
$v = ($j < 10) ? ”0″.$j : $j;
$gpath = $dpath.”/”.$v.”.php”;
if(!file_exists($gpath)){
continue;
} else {
$arr = file($gpath);////將文件讀入數(shù)組中
array_shift($arr);//移出第一個(gè)單元-》<?php exit;?>
$farr = array_merge($farr,$arr);
unset($arr);
}
}
if(empty($this->farr)){
echo ”<p><center>沒有相關(guān)記錄!</center></p>”;
exit;
}
while(!empty($farr)){
$_sub = array_splice($farr, 0, 10000); //每次取出$farr中1000個(gè)
for($i=0,$scount=count($_sub);$i<$scount;$i++){
$arr = explode($spt,$_sub[$i]);
$Uarr[] = $arr[1]; //vurl
$Marr[] = $arr[2]; //vmark
$IParr[] = $arr[3].” |$nbsp;”.$arr[1]; //IP
}
unset($_sub);//用完及時(shí)銷毀
}
unset($farr);


這里,不難看出,一方面,我們要增加PHP可用內(nèi)存大小,另一方面,只要我們想辦法對(duì)數(shù)組進(jìn)行分批處理,分而治之,將用過的變量及時(shí)銷毀(unset),一般是不會(huì)出現(xiàn)溢出問題的。

另外,為了節(jié)省PHP程序內(nèi)存損耗,我們應(yīng)當(dāng)盡可能減少靜態(tài)變量的使用,在需要數(shù)據(jù)重用時(shí),可以考慮使用引用(&)。再一點(diǎn)就是:數(shù)據(jù)庫(kù)操作完成后,要馬上關(guān)閉連接;一個(gè)對(duì)象使用完,要及時(shí)調(diào)用析構(gòu)函數(shù)(__destruct())。

 

二.unset銷毀變量并釋放內(nèi)存問題
PHP的unset()函數(shù)用來清除、銷毀變量,不用的變量,我們可以用unset()將它銷毀。但是某些時(shí)候,用unset()卻無法達(dá)到銷毀變 量占用的內(nèi)存!我們先看一個(gè)例子:

復(fù)制代碼 代碼如下:

<?php
$s=str_repeat('1',255); //產(chǎn)生由255個(gè)1組成的字符串
$m=memory_get_usage(); //獲取當(dāng)前占用內(nèi)存
unset($s);
$mm=memory_get_usage(); //unset()后再查看當(dāng)前占用內(nèi)存
echo $m-$mm;
?>


最后輸出unset()之前占用內(nèi)存減去unset()之后占用內(nèi)存,如果是正數(shù),那么說明unset($s)已經(jīng)將$s從內(nèi)存中銷毀(或者說,unset()之后內(nèi)存占用減少了),可是我在PHP5和windows平臺(tái)下,得到的結(jié)果是:0。這是否可以說明,unset($s)并沒有起 到銷毀變量$s所占用內(nèi)存的作用呢?我們?cè)僮飨旅娴睦樱?/p>

復(fù)制代碼 代碼如下:

<?php
$s=str_repeat('1',256); //產(chǎn)生由256個(gè)1組成的字符串
$m=memory_get_usage(); //獲取當(dāng)前占用內(nèi)存
unset($s);
$mm=memory_get_usage(); //unset()后再查看當(dāng)前占用內(nèi)存
echo $m-$mm;
?>


這個(gè)例子,和上面的例子幾乎相同,唯一的不同是,$s由256個(gè)1組成,即比第一個(gè)例子多了一個(gè)1,得到結(jié)果是:272。這是否可以說 明,unset($s)已經(jīng)將$s所占用的內(nèi)存銷毀了?
通過上面兩個(gè)例子,我們可以得出以下結(jié)論:
結(jié)論一、unset()函數(shù)只能在變量值占用內(nèi)存空間超過256字節(jié)時(shí)才會(huì)釋放內(nèi)存空間。
那么是不是只要變量值超過256,使用unset就可以釋放內(nèi)存空間呢?我們?cè)偻ㄟ^一個(gè)例子來測(cè)試一下:

復(fù)制代碼 代碼如下:

<?php
$s=str_repeat('1',256); //這和第二個(gè)例子完全相同
$p=&$s;
$m=memory_get_usage();
unset($s); //銷毀$s
$mm=memory_get_usage();
echo $p.'<br />';
echo $m-$mm;
?>


刷新頁(yè)面,我們看到第一行有256個(gè)1,第二行是0,按理說我們已經(jīng)銷毀了$s,而$p只是引用$s的變量,應(yīng)該是沒有內(nèi)容了,另 外,unset($s)前后內(nèi)存占用沒變化!現(xiàn)在我們?cè)僮鲆韵碌睦樱?/p>

復(fù)制代碼 代碼如下:

<?php
$s=str_repeat('1',256); //這和第二個(gè)例子完全相同
$p=&$s;
$m=memory_get_usage();
$s=null; //設(shè)置$s為null
$mm=memory_get_usage();
echo $p.'<br />';
echo $m-$mm;
?>


現(xiàn)在刷新頁(yè)面,我們看到,輸出$p已經(jīng)是沒有內(nèi)容了,unset()前后內(nèi)存占用量之差是272,即已經(jīng)清除了變量占用的內(nèi)存。本例中的$s=null也 可以換成unset(),如下:

復(fù)制代碼 代碼如下:

<?php
$s=str_repeat('1',256); //這和第二個(gè)例子完全相同
$p=&$s;
$m=memory_get_usage();
unset($s); //銷毀$s
unset($p);
$mm=memory_get_usage();
echo $p.'<br />';
echo $m-$mm;
?>


我們將$s和$p都使用unset()銷毀,這時(shí)再看內(nèi)存占用量之差也是272,說明這樣也可以釋放內(nèi)存。那么,我們可以得到另外一條結(jié)論:
結(jié)論二、只有當(dāng)指向該變量的所有變量(如引用變量)都被銷毀后,才會(huì)釋放內(nèi)存。

 

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 精品96久久久久久中文字幕无 | 日韩美女毛片 | 欧美日一本| 成年人xxxx | 中文日韩在线 | 日本在线免费视频 | 日韩欧美国产精品 | 91资源在线视频 | 国产精品久久久久av | 中文字幕在线免费看 | 中文字幕一区二区三区乱码图片 | 国产综合亚洲精品一区二 | 中文字幕高清一区 | 欧美日韩六区 | 亚洲精选一区二区 | 午夜在线观看视频 | 亚洲视频精品在线 | 久久精品久久久久电影 | 久久人爽 | 久久久亚洲国产美女国产盗摄 | 在线色综合 | 精品久久久久久久久久久久久久 | 成年人在线视频 | 久久精品国产一区 | 美女视频一区二区三区 | 狠狠爱亚洲 | 懂色aⅴ精品一区二区三区蜜月 | 亚洲精品免费在线观看视频 | 欧美日韩一区二区在线观看 | 国产一区| 日韩精品在线视频 | 国产小视频在线播放 | 日本伊人网 | 天天插天天狠 | 奇米av在线 | 欧美一级全黄 | 动漫羞免费网站中文字幕 | 91中文字幕| 精品国产91乱码一区二区三区 | 久久免费看少妇a高潮一片黄特 | 精品综合99久久久久久www |