он пишет вам с проблемой, с которой я столкнулся впервые в жизни и в которой не разбираюсь. Итак перейду к делу: проблема возникает в Twigu Symfony 4 но я не совсем понимаю, что на самом деле правда... но наверное моя конфигурация, работает на Linux Mint 19 php 7.3 (проверено также на 7.3 и такой же) apache2. Ошибка возникает только локально на тестовом сервере с гораздо большими ограничениями memory_limit такой ошибки не имеет. Локально эта ошибка проявляется в браузере Google Chrome выдает ошибку на белом фоне Сервер xyz.localhost сейчас не может обработать этот запрос. ОШИБКА HTTP 500, а в журналах я получаю:
[Sat Feb 23 20:26:17.700935 2019] [php7:error] [pid 2350] [client ::1:41434] PHP Fatal error: Allowed memory size of 1153433600 bytes exhausted (tried to allocate 1071661056 bytes) in /var/www/xyz/vendor/twig/twig/lib/Twig/Extension/Debug.php on line 50, referer: http://xyz.localhost/
[Sat Feb 23 20:26:17.702800 2019] [php7:error] [pid 2350] [client ::1:41434] PHP Fatal error: Allowed memory size of 1153433600 bytes exhausted (tried to allocate 1071669248 bytes) in /var/www/xyz/vendor/symfony/debug/ExceptionHandler.php on line 177, referer: http://xyz.localhost/
В php.ini я установил memory_limit на 512M, 1000M и на -1 (у меня 12GB Ram на ноутбуке) и никакие настройки не помогли мне добавить с тестовым сервером set memory_limit = 64M и эта подстраница работает без проблем, проблема только происходит и я отключаю локально. Я не храню базу данных локально, я использую точно такую же базу данных, которую использует тестовый сервер (настройки в env идентичны), поэтому запросы к базе данных идут на внешний сервер. Существуют ли другие конфигурации в системе, которые могут повлиять на это?
Проверив код, вызывающий эту ошибку, я определил, что все идет к
{% for data in dataInput['element_2'].getDataForThisElement() %}
где getDataForThisElement() возвращает ArrayCollection. Если я вызову этот метод в Twig, он получит ошибку 500, если я сделаю это в контроллере, и я сделаю это для каждого элемента массива. Я легко могу сбросить эти данные и в Twig, они выливаются даже при наличии в массиве одного элемента. Я специально создал базу, чтобы проверить, возникнет ли проблема, и в локальной базе данных проблема также возникает. Где мне искать решение?
В файле /etc/php/7.2/apache2/php.init я установил memory_limit = 2048M, перезапустил сервер через sudo service apache2 stop и sudo service apache2 start, и я получил разрешенный размер памяти 2147483648 байт (попытался выделить 1071722496 байт). )
Должен ли ваш код хранить все эти данные в памяти или есть способ разбить их на более мелкие пакеты и сбросить переменные по ходу работы?
Тот же код работает на сервере, на котором установлено memory_limit=64M и я не могу его понять. Он читает данные из базы данных с помощью docrin, и в Twigu я отображаю данные, которые есть в таблице, которую я прочитал, и данные, которые имеют отношение к этой таблице. В контроллере я легко могу сбросить эти данные, проблема проявляется только на моем компьютере, я постараюсь получить код максимально быстро






1000М все равно мало. Он пытается выделить 1072 МБ. Вероятно, вам нужно изменить свой код, чтобы вы не пытались хранить так много данных в своей рабочей памяти. Я не могу дать вам конкретный совет, не видя кода.