PHP數組內存耗用太多問題的解決方法
更新時間:2010年04月05日 00:57:39 作者:
一般來說,PHP數組的內存利用率只有 1/10, 也就是說,一個在C語言里面100M 內存的數組,在PHP里面就要1G。特別是在PHP作為后臺服務器的系統(tǒng)中,經常會出現內存耗費太大的問題。
因為這個是語言的問題,常規(guī)方案比較難以解決。下面是一種通過string 解決的方案。
$total = 100000;
$double = "";
for ($i = 0; $i < $total; $i++)
{
$double .= pack("d", $i + 0.1);
}
for ($i = 0; $i < $total; $i++)
{
unpack("@" . ($i * 8) . "/d", $double);
}
這個例子用一個string 保存一個double 的數組。然后在使用的時候unpack出來。
當然,這會影響性能。要看具體的需求。
比如這樣的情況下:
你有10個數組,每個數組10M (1百萬數據左右),那么十個要花費 100M內存。
再加上10個人并發(fā)的話,內存就會嚴重不夠了。
然后,在10個數組,不是每次都同時使用的。你可以,把他們保存成string
然后,在使用的時候,unpack某一個string變成一個數組。
復制代碼 代碼如下:
$total = 100000;
$double = "";
for ($i = 0; $i < $total; $i++)
{
$double .= pack("d", $i + 0.1);
}
for ($i = 0; $i < $total; $i++)
{
unpack("@" . ($i * 8) . "/d", $double);
}
這個例子用一個string 保存一個double 的數組。然后在使用的時候unpack出來。
當然,這會影響性能。要看具體的需求。
比如這樣的情況下:
你有10個數組,每個數組10M (1百萬數據左右),那么十個要花費 100M內存。
再加上10個人并發(fā)的話,內存就會嚴重不夠了。
然后,在10個數組,不是每次都同時使用的。你可以,把他們保存成string
然后,在使用的時候,unpack某一個string變成一個數組。
您可能感興趣的文章:
- PHP 內存緩存加速功能memcached安裝與用法
- 訪問php時提示內存位置訪問無效的解決辦法和思路分析
- 采用PHP函數memory_get_usage獲取PHP內存清耗量的方法
- PHP中使用unset銷毀變量并內存釋放問題
- phpExcel導出大量數據出現內存溢出錯誤的解決方法
- 關于PHP內存溢出問題的解決方法
- 解析PHP中的內存管理,PHP動態(tài)分配和釋放內存
- 解析PHP中的unset究竟會不會釋放內存
- php統(tǒng)計時間和內存使用情況示例分享
- php出現內存位置訪問無效錯誤問題解決方法
- PHP腳本內存泄露導致Apache頻繁宕機解決方法
- PHP通過內置函數memory_get_usage()獲取內存使用情況
- php查詢mysql大量數據造成內存不足的解決方法
- php實現讀取內存順序號
- 解決PHP里大量數據循環(huán)時內存耗盡的方法
- PHP內存使用情況如何獲取
相關文章
Centos 6.5下PHP 5.3安裝ffmpeg擴展的步驟詳解
大家都知道ffmpeg是一款視頻流的軟件了,我們在linux系統(tǒng)中可以安裝ffmpeg了,這篇文章主要介紹了在Centos 6.5下PHP 5.3安裝ffmpeg擴展的步驟,需要的朋友可以參考下。2017-03-03
WordPress開發(fā)中的get_post_custom()函數使用解析
這篇文章主要介紹了WordPress開發(fā)中的get_post_custom()函數使用解析,get_post_custom()函數用于獲取自定義字段,需要的朋友可以參考下2016-01-01
Array of country list in PHP with Zend Framework
Array of country list in PHP with Zend Framework,需要的朋友可以參考下。2011-10-10

