一.內存溢出解決方案
在做數據統計分析時
假定日志中存放的記錄數為
ini_set(‘memory_limit
set_time_limit(
$farr = $Uarr = $Marr = $IParr = $data = $_sub = array();
$spt = ”$@#!$”;
$root = ”/Data/webapps/VisitLog”;
$path = $dpath = $fpath = NULL;
$path = $root
$dpath = $path
for($j=
$v = ($j <
$gpath = $dpath
if(!file_exists($gpath)){
continue;
} else {
$arr = file($gpath);////將文件讀入數組中
array_shift($arr);//移出第一個單元-》<?php exit;?>
$farr = array_merge($farr
unset($arr);
}
}
if(empty($this
echo ”<p><center>沒有相關記錄!</center></p>”;
exit;
}
while(!empty($farr)){
$_sub = array_splice($farr
for($i=
$arr = explode($spt
$Uarr[] = $arr[
$Marr[] = $arr[
$IParr[] = $arr[
}
unset($_sub);//用完及時銷毀
}
unset($farr);
這裡
另外
二.unset銷毀變量並釋放內存問題
PHP的unset()函數用來清除
<?php
$s=str_repeat(
$m=memory_get_usage(); //獲取當前占用內存
unset($s);
$mm=memory_get_usage(); //unset()後再查看當前占用內存
echo $m
?>
最 後輸出unset()之前占用內存減去unset()之後占用內存
<?php
$s=str_repeat(
$m=memory_get_usage(); //獲取當前占用內存
unset($s);
$mm=memory_get_usage(); //unset()後再查看當前占用內存
echo $m
?>
這個例子
通過上面兩個例子
結論一
那麼是不是只要變量值超過
<?php
$s=str_repeat(
$p=&$s;
$m=memory_get_usage();
unset($s); //銷毀$s
$mm=memory_get_usage();
echo $p
echo $m
?>
刷新頁面
<?php
$s=str_repeat(
$p=&$s;
$m=memory_get_usage();
$s=null; //設置$s為null
$mm=memory_get_usage();
echo $p
echo $m
?>
現在刷新頁面
<?php
$s=str_repeat(
$p=&$s;
$m=memory_get_usage();
unset($s); //銷毀$s
unset($p);
$mm=memory_get_usage();
echo $p
echo $m
?>
我們將$s和$p都使用unset()銷毀
結論二
From:http://tw.wingwit.com/Article/program/PHP/201311/21047.html