php函數是釋放結果集,php釋放變數

本文目錄一覽:

php獲取結果集的幾個方法

php獲取查詢結果集有4個函數方法,此處對它們進行綜合比較。

● mysql_result():優點在於使用方便;而缺點在於功能少,一次調用只能獲取結果數據集中的一行記錄,對較大型的資料庫效率較低。

● mysql_fetch_row():優點在於執行效率在4種方法中最高;不足在於只能用數字作為屬性索引來獲得屬性值,在使用時非常容易出現混淆。

● mysql_fetch_array():執行效率同樣很高,同mysql_fetch_row()相差無幾,並且可以用屬性名方式直接獲取得屬性值,因此,在實際應用中最常用。

● mysql_fetch_object():採用了面向對象的思想,在設計思路上更為先進,如果讀者習慣於面向對象的思路來寫程序,則會很自然的選擇它。其次,該方法的優點還體現在,對於結構較為複雜的數據結果,在邏輯上顯得更為清晰。

php 函數運行完了 不就釋放了嗎,還要等腳本結束

首先說下,題主這個問題不是函數釋放的問題

問題在於 require_once

第一次:在get_config內 第一次 引入 conf.php 賦值給 $conf , 此時 $conf 得到期望 數組 ,沒有任何問題。

(註:此時已經在本次運行環境中引入了conf.php)

第二次:在get_config內再次嘗試引入 conf.php 此時 require_once 會檢測到運行環境中已經引入了該文件,此時返回值為 true 對 true 進行取值 肯定是 null

題主正確的做法是把 require_once 放入全局GLOBALS內,在 get_config 內引入全局變數即可。

修改後的代碼:

a.php

$GLOBALS[‘conf’] = require_once ‘conf.php’;

function get_config($key, $default = null){

return isset($GLOBALS[‘conf’][$key])

? $GLOBALS[‘conf’][$key]

: $default;

}

var_dump(get_Config(‘name’));

var_dump(get_Config(‘age’));

— 共有 1 條評論 —

hphper(註:此時已經在本次運行環境中引入了conf.php) 這句話,這個引入是在函數里引入,函數執行完了後在這個運行環境里有引入嗎,如果在這個運行文件里有引入,那麼我直接列印 conf.php里的$config應該有值,但是沒有 也就是說在全局裡並沒有引入 那麼就只在函數里引入了,為什麼第一次的函數執行 會對第二次的執行有影響呢 (3年前)

評論(1)| 引用此答案| 舉報 (2014-06-14 13:12)

樑上有木樑上有木 3年前

題主這個config的格式不需要把引入的文件賦值,只需要require_once就可以了

a.php

1 function get_config($key){

2 require_once ‘conf.php’;

3 return $conf[$key];

4 }

5 echo get_Config(‘name’);

6

7 echo get_Config(‘age’);

conf.php

1 $config=array(

2 ‘name’=’hk’,

3 ‘age’=’22’

5 );

評論(0)| 引用此答案| 舉報 (2014-06-14 15:34)

hphperhphper 3年前

引用來自「樑上有木」的評論

題主這個config的格式不需要把引入的文件賦值,只需要require_once就可以了

a.php

1 function get_config($key){

2 require_once ‘conf.php’;

3 return $conf[$key];

4 }

5 echo get_Config(‘name’);

6

7 echo get_Config(‘age’);

conf.php

1 $config=array(

2 ‘name’=’hk’,

3 ‘age’=’22’

5 );

function get_config($key){

require_once ‘conf.php’;

return $conf[$key];

}

里$conf是啥,

是a.php里的 $config吧

就算是

第二次調用 也是不行的

評論(0)| 引用此答案| 舉報 (2014-06-14 16:46)

TuesdayTuesday 3年前

終於明白為什麼php 的排名日落千丈了.

— 共有 1 條評論 —

hphper是我這樣的小白 多了是嗎? (3年前)

評論(1)| 引用此答案| 舉報 (2014-06-14 18:43)

南湖船老大南湖船老大 3年前

各種亂入,各種小白啊,貴圈太亂了。。。

都是想當然地寫代碼。。。require_once 你賦值幹嘛。。。而且你這種寫法很粗糙,也很dirty,你造嗎?

推薦寫法:

$config = call_user_func(function() {

return include ‘config.php’;

});

— 共有 3 條評論 —

南湖船老大回復 @hphper : 變數可能被污染,用匿名函數和閉包就避免了這種情況 (3年前)

hphper為什麼粗糙,dirty了,怎麼判斷粗糙不粗糙呢 (3年前)

hphper哦,看來進步空間還很大啊 (3年前)

評論(3)| 引用此答案| 舉報 (2014-06-14 19:46)

hphperhphper 3年前

引用來自「D哥」的評論

首先說下,題主這個問題不是函數釋放的問題

問題在於 require_once

第一次:在get_config內 第一次 引入 conf.php 賦值給 $conf , 此時 $conf 得到期望 數組 ,沒有任何問題。

(註:此時已經在本次運行環境中引入了conf.php)

第二次:在get_config內再次嘗試引入 conf.php 此時 require_once 會檢測到運行環境中已經引入了該文件,此時返回值為 true 對 true 進行取值 肯定是 null

題主正確的做法是把 require_once 放入全局GLOBALS內,在 get_config 內引入全局變數即可。

修改後的代碼:

a.php

$GLOBALS[‘conf’] = require_once ‘conf.php’;

function get_config($key, $default = null){

return isset($GLOBALS[‘conf’][$key])

? $GLOBALS[‘conf’][$key]

: $default;

}

var_dump(get_Config(‘name’));

var_dump(get_Config(‘age’));

謝謝!,我在函數里用靜態變數也可以,您這也是一種方法

我仍不理解的是:第二次 執行時,既然它已經檢測到 已經引入了該文件,那我直接用conf.php 里的 $config為啥也不行啊

我最不明白的是 函數里的 require_once 對正在執行這個函數的文件的影響,下次再require_once的時候 為啥受上一次函數的影響

關於php中釋放資源mysql_free_result函數,釋放資源是什麼意思,是不是把mysql_query結果集中的值清空?

mysql查詢結果句柄會消耗內存。為了節約內存,在使用完畢後可以手動釋放。不過一般情況下不需要這麼做,程序結束會自動釋放的。

這裡的$pageCount變數存在。因為釋放mysql句柄$res和$pageCount無關。

以下方法可以釋放$pageCount:

unset($pageCount);

望採納,謝謝支持!

Thinkphp 是否需要手動釋放結果集?

不需要手動釋放,當執行完這個頁面的腳本後,$res這個變數會自動銷毀,資料庫連接會在語句執行完成後斷開。

例如,在任一控制器的任一方法內寫入下列代碼

if(I(“get.a”)){

$a = I(“get.a”);

dump($a);

}else{

dump($a);

}

第一次打開這個頁面時加上a=1的參數,會輸出1,然後把參數去掉,會輸出空或未定義的變數。

PHP管理內存函數 memory_get_usage()使用介紹

下面是PHP

memory_get_usage()使用示例:

複製代碼

代碼如下:

echo

memory_get_usage(),

‘br

/’;

//143952

$tmp

=

str_repeat(”,

4000);

echo

memory_get_usage(),

‘br

/’;

//232048

unset($tmp);

echo

memory_get_usage();

//143952

上面的程序後面的注釋代表了它們的輸出(單位為

byte(s)),也就是當時

PHP

腳本使用的內存(不含

memory_get_usage()

函數本身佔用的內存)

由上面的例子可以看出,要想減少內存的佔用,可以使用

PHP

unset()

函數把不再需要使用的變數刪除。類似的還有:PHP

mysql_free_result()

函數,可以清空不再需要的查詢資料庫得到的結果集,這樣也能得到更多可用內存。

PHP

memory_get_usage()還可以有個參數,$real_usage,其值為布爾值。默認為

FALSE,表示得到的內存使用量不包括該函數(PHP

內存管理器)佔用的內存;當設置為

TRUE

時,得到的內存為包括該函數(PHP

內存管理器)佔用的內存。

所以在實際編程中,可以用PHP

memory_get_usage()比較各個方法佔用內存的高低,來選擇使用哪種佔用內存小的方法。

常用的檢測:

用microtime函數就可以分析程序執行時間

memory_get_usage可以分析內存佔用空間

SQL的效率可以使用打開慢查詢查看日誌分析

SQL

找到有瓶頸的使用EXPLAIN

來分析

原創文章,作者:XCNV,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/148436.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
XCNV的頭像XCNV
上一篇 2024-11-03 15:16
下一篇 2024-11-03 15:16

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • int類型變數的細節與注意事項

    本文將從 int 類型變數的定義、聲明、初始化、範圍、運算和類型轉換等方面,對 int 類型變數進行詳細闡述和講解,幫助讀者更好地掌握和應用 int 變數。 一、定義與聲明 int…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字元串操作中,capitalize函數常常被用到,這個函數可以使字元串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • 單片機列印函數

    單片機列印是指通過串口或並口將一些數據列印到終端設備上。在單片機應用中,列印非常重要。正確的列印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的列印數據可以幫助我們快速…

    編程 2025-04-29
  • 三角函數用英語怎麼說

    三角函數,即三角比函數,是指在一個銳角三角形中某一角的對邊、鄰邊之比。在數學中,三角函數包括正弦、餘弦、正切等,它們在數學、物理、工程和計算機等領域都得到了廣泛的應用。 一、正弦函…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變數時顯示的指定變數類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Python實現計算階乘的函數

    本文將介紹如何使用Python定義函數fact(n),計算n的階乘。 一、什麼是階乘 階乘指從1乘到指定數之間所有整數的乘積。如:5! = 5 * 4 * 3 * 2 * 1 = …

    編程 2025-04-29
  • Python定義函數判斷奇偶數

    本文將從多個方面詳細闡述Python定義函數判斷奇偶數的方法,並提供完整的代碼示例。 一、初步了解Python函數 在介紹Python如何定義函數判斷奇偶數之前,我們先來了解一下P…

    編程 2025-04-29

發表回復

登錄後才能評論