Re: [請益] out of memory

看板PHP作者 (Beautiful Stranger)時間16年前 (2009/10/15 21:56), 編輯推噓3(307)
留言10則, 4人參與, 最新討論串2/3 (看更多)
抱歉更正一下, 我把寫入大文件的語法給註解掉之後 還是會發生 out of memory錯誤 所以似乎不是組成大文件那邊的問題 我在想會不會是for loop裡面的開檔寫檔讀檔太多次 (共3800個小檔案) 造成記憶體負擔@@? ※ 引述《Joe8 (Beautiful Stranger)》之銘言: : 想請教一下我在執行程式的時候發生out of memory, : 我大概描述一下我的作法, 麻煩各位幫我建議ㄧ下 ^^" : 目的: 1. 將n個小文件個別做處理 (產出n個small.txt) : 2. 將1的處理結果集合成一份大文件 (只有1個 Big.txt) : 程式: : $fp_Big = fopen ("BigArticle.txt", "a+"); : for loop n次{ : //省略小文件的處理過程 : $fp_Small = fopen ("small_{n}.txt", "w"); : fputs($fp_Small , $input_string); //將字串寫入檔案 ,各自的小檔案 : fclose($fp_Small); : fputs($fp_Big , $input_string); //將字串寫入檔案, 集合的大文件 : } : fclose($fp_Big); : 結果: 這樣的程式是可行的,至少在讀入的檔案數量不會太多的時候是ok : 但如果太多就會發生以下錯誤訊息 : Fatal error: Out of memory (allocated 30408704) : (tried to allocate 9252474 bytes ) in C:\AppServ\php5\extract.php : on line 82 : 發生錯誤的那行是執行fputs($fp_Big , $input_string); : 請問我該怎麼解決呢,我改過php.ini裡面的memory size也沒用... Orz -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.192.35.49

10/15 22:15, , 1F
我倒對於$input_string的內容感到很好奇.該不會是因為這原因
10/15 22:15, 1F

10/15 22:15, , 2F
?例如不小心用上這種寫法: $input_string.=$line; 結果
10/15 22:15, 2F

10/15 22:15, , 3F
$input_string愈滾愈大?
10/15 22:15, 3F

10/15 22:27, , 4F
喔沒有,那個字串每跑一次都是新的, 沒有累加!!
10/15 22:27, 4F

10/16 09:07, , 5F
small_{$n} ? small_{n} ?
10/16 09:07, 5F

10/16 11:30, , 6F
喔喔 那是我筆誤 那是個變數沒錯
10/16 11:30, 6F

10/16 13:59, , 7F
你有從phpinfo確認你有修改記憶體限制了嗎??
10/16 13:59, 7F

10/16 14:00, , 8F
appserv的php.ini我忘記是在%appserv$\php?
10/16 14:00, 8F

10/16 14:00, , 9F
還是在%win%\php.ini?
10/16 14:00, 9F

10/16 14:08, , 10F
我有改過了 我從phpinfo看已經是 128M
10/16 14:08, 10F
文章代碼(AID): #1AroeCyD (PHP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
2
6
以下文章回應了本文
完整討論串 (本文為第 2 之 3 篇):
3
10
2
6
文章代碼(AID): #1AroeCyD (PHP)