Re: [請益] out of memory

看板PHP作者 (寶貝豬)時間16年前 (2009/10/15 22:51), 編輯推噓3(304)
留言7則, 3人參與, 最新討論串3/3 (看更多)
我剛用10000次幫你測試, ok的呀. 應該不是開檔關檔次數的問題. <?php for($i=0;$i<10000;$i++){ $input_string="hello\n"; //省略小文件的處理過程 $fp_Small = fopen("small_$i.txt", "w"); fputs($fp_Small , $input_string); //將字串寫入檔案 ,各自的小檔案 fclose($fp_Small); } ?> ※ 引述《Joe8 (Beautiful Stranger)》之銘言: : 抱歉更正一下, 我把寫入大文件的語法給註解掉之後 : 還是會發生 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: 58.115.151.184

10/16 09:05, , 1F
咦...會不會是系統不同 你家記憶體比較大嗎xd
10/16 09:05, 1F

10/16 09:07, , 2F
你有檢查過所有的檔案,確定都是小文件嗎?
10/16 09:07, 2F

10/16 09:48, , 3F
嘿!我的記憶體說出來可別嚇著了: 768MB
10/16 09:48, 3F

10/16 09:49, , 4F
cpu: 1.06MHZ, 系統: win2000
10/16 09:49, 4F

10/16 11:29, , 5F
有阿 都是小文件... bobju的系統真強大Orz
10/16 11:29, 5F

10/16 18:29, , 6F
10年前稱強大或許還可以,現在的話嘛...:P
10/16 18:29, 6F

10/16 18:31, , 7F
你這問題還無解的話恐怕得追原始碼,一個個try才知道原因了.
10/16 18:31, 7F
文章代碼(AID): #1ArpR-pk (PHP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
3
10
完整討論串 (本文為第 3 之 3 篇):
3
10
2
6
文章代碼(AID): #1ArpR-pk (PHP)