2016-02-13 53 views
1

我想問問是否有人遇到同樣的問題或知道任何解決方法來解決它。preg_match_all在服務器上執行停止代碼(大文件)

我有一個很大的文件(15MB),我找到並讀取它們的數組值。 在xampp上,preg_match_all的代碼正常工作(適用於大文件和小文件)。

當前PHP版本:5.5.9(2 vcpu 2GB RAM) preg_match_all停止執行代碼(如果我使用小文件測試它會給出正確的結果)。

+4

請參閱http://stackoverflow.com/questions/11315879/php-preg-match-all-100-mb-file,也https://bytes.com/topic/php/answers/7996-preg_match-_all -big-strings –

+0

關於php.ini和webserver,你對xampp和你的vps有相同的確切配置嗎?你有任何PHP日誌錯誤? – peixotorms

回答

2

嘗試使用:

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

在腳本的開始。

此外,如果您從瀏覽器調用腳本,請在該循環上打印一個空白區域以保持瀏覽器的活動狀態。

+0

我使用preg_match_all,所以沒有任何循環。一段時間以前,我在preg迴應文件數據,我認爲保持大酒杯活着,它工作正常,但後來(緩存可能?)停止再次工作 – iMMuNiTy

+0

ini_set('memory_limit','1024M');已修復它:)非常感謝你! 內存使用情況將僅適用於該腳本正在運行的權利? (默認值是我的ini fule 128M) – iMMuNiTy

+1

1024M是內存限制(可能比這少得多),並且如果需要,它將被使用,僅用於該運行腳本並在運行時。之後,它將被髮送到操作系統進行回收(也就是說,您可能會在緩衝區中看到它,但如果需要,它可以從任何其他軟件中獲得)。 – peixotorms