最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php查詢mysql大量數(shù)據(jù)造成內(nèi)存不足的解決方法

 更新時間:2015年03月04日 09:04:26   作者:代碼家園  
這篇文章主要介紹了php查詢mysql大量數(shù)據(jù)造成內(nèi)存不足的解決方法,實例分析了mysql查詢時內(nèi)存不足的原因與相應(yīng)的解決方法,并且較為詳細的分析了mysql_unbuffered_query函數(shù)的使用技巧,需要的朋友可以參考下

本文實例分析了php查詢mysql大量數(shù)據(jù)造成內(nèi)存不足的解決方法。分享給大家供大家參考。具體分析如下:

一、問題

使用php查詢mysql大數(shù)據(jù)量的時候,程序尚未執(zhí)行完畢,跳出警告:
Fatal error:  Allowed memory size of 100663296 bytes exhausted (tried to allocate 103 bytes)
錯誤提示:php所分配到的100M內(nèi)存被占用完畢。

二、解決方法:

最簡單的解決辦法是:在執(zhí)行文件的頭部增加:

ini_set('memory_limit','256M'); 

把內(nèi)存增加到256M或者更多,可以增大php所使用的內(nèi)存空間
但是下次若要讀取更多的數(shù)據(jù)該怎么辦呢,總不能一次次的增加,導致服務(wù)器的內(nèi)存都被php吃光。

這里介紹一個函數(shù):

使用memory_get_usage()方法獲得php使用的內(nèi)存量。發(fā)現(xiàn)隨著讀取數(shù)據(jù)條數(shù)的增加,php使用的內(nèi)存在一步步增加。
難道php在查詢mysql時的數(shù)據(jù)是存在內(nèi)存中的?搜索了一下,發(fā)現(xiàn)果真大概就是這個意思。
mysql的C API函數(shù)有mysql_use_result()和mysql_store_result()
mysql_store_result()會把結(jié)果集從mysqlServer讀到客戶端,而 mysql_use_result()只是讀取了結(jié)果集的元信息

1、php的mysql_query調(diào)用的是mysql_store_result(),自動獲取并緩存結(jié)果集
2、而php的另一個函數(shù)mysql_unbuffered_query()則是調(diào)用的 mysql_use_result(),一方面,這在處理很大的結(jié)果集時會節(jié)省可觀的內(nèi)存。另一方面,可以在獲取第一行后立即對結(jié)果集進行操作,而不用等到整個 SQL 語句都執(zhí)行完畢。

所以我們在讀取大量數(shù)據(jù)的時候,可以使用mysql_unbuffered_query()來替代mysql_query()。經(jīng)測試,的確如此。而且相當給力,導完所有數(shù)據(jù)內(nèi)存一直保持在1MB以內(nèi),沒有增長過
mysql_unbuffered_query() 向 MySQL 發(fā)送一條 SQL 查詢 query,但不像 mysql_query()那樣自動獲取并緩存結(jié)果集。一方面,這在處理很大的結(jié)果集時會節(jié)省可觀的內(nèi)存。另一方面,可以在獲取第一行后立即對結(jié)果集進行操作,而不用等到整個 SQL 語句都執(zhí)行完畢。當使用多個數(shù)據(jù)庫連接時,必須指定可選參數(shù) link_identifier。
mysql_unbuffered_query()的好處是有代價的:在 mysql_unbuffered_query()返回的結(jié)果集之上不能使用 mysql_num_rows() 和 mysql_data_seek()。此外在向 MySQL 發(fā)送一條新的 SQL 查詢之前,必須提取掉所有未緩存的 SQL 查詢所產(chǎn)生的結(jié)果行。
所以一定要結(jié)合自己的業(yè)務(wù)需求適當?shù)倪x取函數(shù)

希望本文所述對大家的php程序設(shè)計有所幫助。

相關(guān)文章

  • PHP禁止頁面緩存的代碼

    PHP禁止頁面緩存的代碼

    在PHP中可以輕松的使用下面的語句實現(xiàn)禁止頁面緩存,但比較難記特整理下,方便大家使用。
    2011-10-10
  • php實現(xiàn)圖片局部打馬賽克的方法

    php實現(xiàn)圖片局部打馬賽克的方法

    這篇文章主要介紹了php實現(xiàn)圖片局部打馬賽克的方法,實例分析了php針對圖片操作的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-02-02
  • PHP實現(xiàn)基于3DES算法加密解密字符串示例

    PHP實現(xiàn)基于3DES算法加密解密字符串示例

    這篇文章主要介紹了PHP實現(xiàn)基于3DES算法加密解密字符串,簡單描述了3DES加密算法的概念、原理并結(jié)合實例形式分析了3DES加密算法具體定義與使用技巧,需要的朋友可以參考下
    2018-08-08
  • PHP網(wǎng)頁緩存技術(shù)優(yōu)點及代碼實例

    PHP網(wǎng)頁緩存技術(shù)優(yōu)點及代碼實例

    這篇文章主要介紹了PHP網(wǎng)頁緩存技術(shù)優(yōu)點及代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • Linux下PHP加速器APC的安裝與配置筆記

    Linux下PHP加速器APC的安裝與配置筆記

    這篇文章主要介紹了Linux下PHP加速器APC的安裝與配置筆記,本文同時給出了Windows下安裝apc的方法,需要的朋友可以參考下
    2014-10-10
  • 淺談如何提高PHP代碼質(zhì)量之單元測試

    淺談如何提高PHP代碼質(zhì)量之單元測試

    最常見的測試軟件的方法可能是編寫單元測試。它們的目的是測試代碼的特定單元,基于這樣的假設(shè):一切都按預(yù)期運行。為了能夠編寫適當?shù)膯卧獪y試,我們的代碼應(yīng)該遵循一些基本的設(shè)計規(guī)則。我們應(yīng)該特別關(guān)注 SOLID 原則。
    2021-05-05
  • PHP提示Cannot modify header information - headers already sent by解決方法

    PHP提示Cannot modify header information - headers already sent

    這篇文章主要介紹了PHP提示Cannot modify header information - headers already sent by解決方法,是在PHP程序開發(fā)中非常典型的錯誤情況,非常具有實用價值,需要的朋友可以參考下
    2014-09-09
  • php模仿asp Application對象在線人數(shù)統(tǒng)計實現(xiàn)方法

    php模仿asp Application對象在線人數(shù)統(tǒng)計實現(xiàn)方法

    這篇文章主要介紹了php模仿asp Application對象在線人數(shù)統(tǒng)計實現(xiàn)方法,通過一個比較簡單的自定義函數(shù)實現(xiàn)這一功能,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • php Mysql日期和時間函數(shù)集合

    php Mysql日期和時間函數(shù)集合

    本文是腳本之家小編給大家收集的比較全的Mysql日期和mysql時間函數(shù),感興趣的朋友跟隨一起看看吧
    2007-11-11
  • PHP正則驗證字符串是否為數(shù)字的兩種方法并附常用正則

    PHP正則驗證字符串是否為數(shù)字的兩種方法并附常用正則

    今天小編就為大家分享一篇關(guān)于PHP正則驗證字符串是否為數(shù)字的兩種方法并附常用正則,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02

最新評論

石渠县| 乐东| 德惠市| 天台县| 五河县| 临沧市| 铜川市| 三河市| 屏南县| 木里| 闸北区| 营口市| 登封市| 芜湖县| 疏附县| 赣榆县| 重庆市| 达拉特旗| 梅河口市| 汾西县| 阳山县| 洪洞县| 金塔县| 定兴县| 肇州县| 宁夏| 辰溪县| 渭南市| 福安市| 淅川县| 天峨县| 阜康市| 新乡县| 龙泉市| 盘锦市| 宜川县| 惠来县| 林周县| 九龙坡区| 武冈市| 浮山县|