promotion image of download ymail app
Promoted
Anonymous
Anonymous asked in 電腦與網際網路程式設計 · 1 decade ago

php中的mssql_query

不知道有人遇過這個問題嗎???

我用mssql_query擷取3萬筆資料結果當掉了

出現allowed memory size of xxx bytes...

我上google去找解決的方法...發現可以用ini_set("memory_lmit",xx)

來解決,於是我把我的memory_limit一直加大到500M,終於解決了

可是因為資料筆數會一直增加,所以以後查詢的時候一定又會爆記憶體

那我就必須一直增加memory_limit,可是主機的記憶體大小只有1G,電腦上的

分頁記憶大小也才500M,這樣會對主機有什麼不好的影響嗎???

再來就是,mssql並不像mysql有limit 的功能,雖然有top 但是卻不是很好用

所以在擷取資料的時候沒有辦法分頁的擷取....只能一次把全部的資料取出來

然後再用mssql_data_seek去做分頁..可是一但資料筆數很多再加上查詢的欄位很多..

就會如同上述一樣出現當掉的訊息...不知道有沒有什麼方法能夠解決呢???

2 Answers

Rating
  • 1 decade ago
    Favorite Answer

    $pages = 1; //假設要抓第一頁

    $records_per_page = 10; //一頁要取幾筆

    $offset=($pages-1)*$records_per_page;

    $rs = $mssql_conn->SelectLimit($SQL,$records_per_page,$offset);

    這是 mssql 類似 mysql limit 的用法

    建議這樣用

    不要一次全部抓出來

    Source(s): 我的程式
    • Commenter avatarLogin to reply the answers
  • 1 decade ago

    這個還是得用top的方式去做

    如果不利用top的話,每次重載頁面的時候

    都會將資料全部載入記憶體

    這樣系統根本撐不住

    現在你加大到500m

    那如果再增加個一萬,系統又當了

    所以只好再寫top了唄

    原則上,你是可以自訂function將sql語法丟入

    然後再產生分頁的sql

    善用正規可以很容易達成你要的分頁功能

    • Commenter avatarLogin to reply the answers
Still have questions? Get your answers by asking now.