真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

php數(shù)據(jù)庫內(nèi)存 php內(nèi)存占用

如何解決PHP查詢大量數(shù)據(jù)內(nèi)存耗盡的問題

這個(gè)問題在PHP的官方網(wǎng)站上叫緩沖查詢和非緩沖查詢(Buffered and Unbuffered queries)。PHP的查詢?nèi)笔∧J绞蔷彌_模式。也就是說,查詢數(shù)據(jù)結(jié)果會(huì)一次全部提取到內(nèi)存里供PHP程序處理。這樣給了PHP程序額外的功能,比如說,計(jì)算行數(shù),將指針指向某一行等。更重要的是程序可以對(duì)數(shù)據(jù)集反復(fù)進(jìn)行二次查詢和過濾等操作。但這種緩沖查詢模式的缺陷就是消耗內(nèi)存,也就是用空間換速度。

集美ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

相對(duì)的,另外一種PHP查詢模式是非緩沖查詢,數(shù)據(jù)庫服務(wù)器會(huì)一條一條的返回?cái)?shù)據(jù),而不是一次全部返回,這樣的結(jié)果就是PHP程序消耗較少的內(nèi)存,但卻增加了數(shù)據(jù)庫服務(wù)器的壓力,因?yàn)閿?shù)據(jù)庫會(huì)一直等待PHP來取數(shù)據(jù),一直到數(shù)據(jù)全部取完。

很顯然,緩沖查詢模式適用于小數(shù)據(jù)量查詢,而非緩沖查詢適應(yīng)于大數(shù)據(jù)量查詢。

如何解決PHP里大量數(shù)據(jù)循環(huán)時(shí)內(nèi)存耗盡的問題

?php

mysql_connect("localhost", "mysql_user", "mysql_password") or

die("Could not connect: " . mysql_error());//連接你的數(shù)據(jù)庫

mysql_select_db("mydb");//選擇你的數(shù)據(jù)庫

$result = mysql_query("SELECT `name` FROM data_boy WHERE `id`='2' LIMIT 0, 60");//執(zhí)行SQL查詢語句,搜索出60條數(shù)據(jù)

while ($row = mysql_fetch_array($result)) {

echo "姓名:".$row[name]."br";

/*補(bǔ)充一句,此處也可以是:

echo "姓名:".$row[0]."br";此處"mysql_fetch_array"默認(rèn)返回的既有 關(guān)聯(lián)數(shù)組(字段作為鍵名),也有數(shù)字索引數(shù)組*/

}

mysql_free_result($result);//釋放結(jié)果

如何獲知PHP程序占用多少內(nèi)存memory

想要知道編寫的 PHP 腳本需要占用多少內(nèi)存么?很簡(jiǎn)單,直接使用 PHP 查看當(dāng)前分配給 PHP 腳本的內(nèi)存的函數(shù) memory_get_usage() 就可以了。

下面是使用示例:

?php

echo memory_get_usage(), 'br /'; // 313864

$tmp = str_repeat('', 4000);

echo memory_get_usage(), 'br /'; // 406048

unset($tmp);

echo memory_get_usage(); // 313952

?

上面的程序后面的注釋代表了它們的輸出(單位為 byte(s)),也就是當(dāng)時(shí) PHP 腳本使用的內(nèi)存(不含 memory_get_usage() 函數(shù)本身占用的內(nèi)存)。

由上面的例子可以看出,要想減少內(nèi)存的占用,可以使用 PHP unset() 函數(shù)把不再需要使用的變量刪除。類似的還有:PHP mysql_free_result() 函數(shù),可以清空不再需要的查詢數(shù)據(jù)庫得到的結(jié)果集,這樣也能得到更多可用內(nèi)存。

PHP memory_get_usage() 函數(shù)還可以有個(gè)參數(shù),$real_usage,其值為布爾值。默認(rèn)為

FALSE,表示得到的內(nèi)存使用量不包括該函數(shù)(PHP 內(nèi)存管理器)占用的內(nèi)存;當(dāng)設(shè)置為 TRUE 時(shí),得到的內(nèi)存為不包括該函數(shù)(PHP

內(nèi)存管理器)占用的內(nèi)存。

所以在實(shí)際編程中,可以用 memory_get_usage() 函數(shù)比較各個(gè)方法占用內(nèi)存的高低,來選擇使用哪種占用內(nèi)存小的方法。

貼個(gè)使用函數(shù):

if (!function_exists('memory_get_usage'))

{

/**

+----------------------------------------------------------

* 取得內(nèi)存使用情況

+----------------------------------------------------------

* @return integer

+----------------------------------------------------------

*/

function memory_get_usage()

{

$pid = getmypid();

if (IS_WIN)

{

exec('tasklist /FI "PID eq ' . $pid . '" /FO LIST', $output);

return preg_replace('/[^0-9]/', '', $output[5]) * 1024;

}

else

{

exec("ps -eo%mem,rss,pid | grep $pid", $output);

$output = explode(" ", $output[0]);

return $output[1] * 1024;

}

}

}

再來個(gè)函數(shù)使用例子:

?php

//memory_get_usage();

$m1 = memory_get_usage();

echo 'br / m1:',$m1;//58096

$a = 'hello';

$b = str_repeat($a,1000);

$m2 = memory_get_usage();

echo 'br / m2:',$m2;//63424

unset($b);

$m3 = memory_get_usage();

echo 'br / m3:',$m3;//58456

?

如何解決PHP向數(shù)據(jù)庫大量插入數(shù)據(jù)時(shí),占用內(nèi)存不斷上升的問題

如何解決PHP向數(shù)據(jù)庫大量插入數(shù)據(jù)時(shí),占用內(nèi)存不斷上升的問題

?php

mysql_connect("localhost", "mysql_user", "mysql_password") or

die("Could not connect: " . mysql_error());//連接你的數(shù)據(jù)庫

mysql_select_db("mydb");//選擇你的數(shù)據(jù)庫

$result = mysql_query("SELECT `name` FROM data_boy WHERE `id`='2' LIMIT 0, 60");//執(zhí)行SQL查詢語句,搜索出60條數(shù)據(jù)

while ($row = mysql_fetch_array($result)) {

echo "姓名:".$row[name]."br";

/*補(bǔ)充一句,此處也可以是:

echo "姓名:".$row[0]."br";此處"mysql_fetch_array"默認(rèn)返回的既有 關(guān)聯(lián)數(shù)組(字段作為鍵名),也有數(shù)字索引數(shù)組*/


網(wǎng)頁題目:php數(shù)據(jù)庫內(nèi)存 php內(nèi)存占用
鏈接地址:http://weahome.cn/article/hpegcj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部