Подтвердить что ты не робот

Ограничение размера массива в PHP

Мне интересно, существует ли ограничение размера для массива в php 5? Я написал php script, чтобы изменить последний элемент каждой строки в файле. распечатать содержимое измененного файла, когда я запускаю script в файле небольшого размера (т.е. каждая строка содержит 4 значения), он будет работать. Когда я запускаю его в более крупном файле (например, 60000 строк, каждый из которых содержит 90 значений), он не изменяет бит исходного файла, но script не выдавал никакого сообщения об исключении во время выполнения. В чем проблема?

4b9b3361

Ответ 1

У вас может быть нехватка памяти, так как размер вашего массива (теоретически) ограничен только объемом памяти, выделенной для script. Поместите ini_set('memory_limit', '1024M'); в начало вашего script, чтобы установить ограничение на память до 1 ГБ. Возможно, вам понадобится увеличить это еще выше для достижения наилучших результатов.

Ответ 2

Поскольку manyxcxi говорит, что вам, вероятно, придется увеличить memory_limit. Иногда вы также можете уменьшить использование памяти, отключив большие переменные с unset ($ var). Это необходимо только тогда, когда переменная остается в области далеко за последней точкой ее использования.

Вы случайно читаете весь файл, транслируете его, а затем записываете новый файл? Если это так, вы можете уменьшить использование памяти, работая в цикле, где вы читаете небольшую часть, обрабатываете ее и записываете и повторяете, пока не дойдете до конца файла. Но только если алгоритму преобразования не нужен весь файл, чтобы преобразовать небольшую часть.