[請益] 變數造成記憶體不足

看板PHP作者 (阿米)時間14年前 (2011/07/13 10:08), 編輯推噓3(3022)
留言25則, 7人參與, 最新討論串1/1
請問一下 我的寫法是 把資料都丟到一個變數中 然後在 一次 ECHO 出來 這樣造成記憶體不足 有個客戶樹狀分類開了 四五百個,變數撐不下去就直接白畫面.... 這樣有辦法解決嗎? 除了記憶體開大一點之外.... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 112.105.106.143

07/13 10:40, , 1F
我目前還沒有遇過 宣告變數造成的這種問題 可以在敘述清楚
07/13 10:40, 1F

07/13 10:40, , 2F
通常我們使用資料 大多都是使用陣列去處理
07/13 10:40, 2F

07/13 10:41, , 3F
等於說 將資料包成自己要的陣列 再用迴圈撈出來使用
07/13 10:41, 3F

07/13 11:01, , 4F
j忘了說我是用XOOPS 用內建的 樹狀取出來 回傳變數,就直接
07/13 11:01, 4F

07/13 11:01, , 5F
說記憶體不足,現在伺服器會開大記憶體,不過為了以後設計
07/13 11:01, 5F

07/13 11:02, , 6F
的問題,我想避免掉這種問題,尤其是跑樹狀分類 很容易遇到
07/13 11:02, 6F

07/13 11:02, , 7F
這種問題,不解決又不行
07/13 11:02, 7F

07/13 11:03, , 8F
樹狀一定是用遞迴去跑,跑回來的資料量如果太多一定很大
07/13 11:03, 8F

07/13 11:27, , 9F
用stack自行遞迴...y
07/13 11:27, 9F

07/13 11:29, , 10F
不然可以用file io做暫存檔取代變數
07/13 11:29, 10F

07/13 12:24, , 11F
我很好其記憶體是開多少?該不會是以前的設定24MB這樣...
07/13 12:24, 11F

07/13 12:59, , 12F
16MB
07/13 12:59, 12F

07/13 13:21, , 13F
16mb說實在的是有點太小了...
07/13 13:21, 13F

07/13 14:04, , 14F
為了避免有類似情況,只好想想看別種寫法一勞永逸
07/13 14:04, 14F

07/13 14:14, , 15F
先丟到文字檔或DB?
07/13 14:14, 15F

07/13 19:48, , 16F
你確定是變數爆炸? 還是說瀏灠器受不了這樣的資料量...
07/13 19:48, 16F

07/13 22:15, , 17F
Browser應該不會炸(IE除外)。我曾丟過一個幾萬筆SQL跑也
07/13 22:15, 17F

07/13 22:16, , 18F
OK,只是耗很久
07/13 22:16, 18F

07/13 23:36, , 19F
純丟sql跑沒什麼差,別timeout就好,是怕echo到巨量的資料...
07/13 23:36, 19F

07/13 23:54, , 20F
我是 echo 出來沒錯
07/13 23:54, 20F

07/14 01:23, , 21F
邊跑邊echo 幾10m的資料量都不太會有問題,但是塞在變數中
07/14 01:23, 21F

07/14 01:24, , 22F
傳遞,過小記憶體的伺服器 一定停掉....不知道存暫存然後在
07/14 01:24, 22F

07/14 01:25, , 23F
一個一個讀出來會不會有用....我的寫法是 丟到 smarty 去...
07/14 01:25, 23F

07/14 01:26, , 24F
因為 smarty 不知道怎麼寫遞迴,所以丟 FUNCTION 先處理...
07/14 01:26, 24F

07/14 18:37, , 25F
配合jquery 分區段撈資料,或是使用ob_start 緩衝區輸出
07/14 18:37, 25F
文章代碼(AID): #1E7FuknR (PHP)
文章代碼(AID): #1E7FuknR (PHP)