2013-07-10 3 views
0

Использование Symfony2, Doctrine2 и MySQL, я столкнулся с некоторыми проблемами.Symfony2 blank page

Представьте себе какую-то простую ученую доктрину с 14 элементами в базе данных, которые должны быть перечислены в определенном документе myPage.

Выполняю запрос из браузера, а я делаю GET в методе контроллера myPage. Метод выполняется от начала до конца (я вижу это в журналах), извлекая каждый элемент и готовя их к возврату в массиве. Наконец, контроллер правильно генерирует ответ и возвращает его. Я пишу этот объект Response в журналах и отлично смотря.

Но сюрприз !, все, что я получаю в браузере пустой страница:

<html> 
    <head></head> 
    <body></body> 
</html> 

Невероятно, но если я удалить любого из элементов, чтобы быть неправдоподобными и перечислены в браузере, так что вместо того, 14, я перечисляю 13, страница просто «оживает», и она отлично просматривается. Обратите внимание, что в обоих случаях каждый журнал показывает точно то же самое. Контроллер выполняется от A до Z, и ответ правильно формируется и возвращается одинаково.

Оба кеша сервера и браузера были очищены десятками раз.


Edit (некоторые эксперименты): Удаление всех переменных и писать только основной HTML-страницы, он правильно просмотрены:

<html> 
    <head></head> 
    <body>Hello world!</body> 
</html> 

Вставка trans-endtrans этикетки, это работает. Это браузеры страницы:

<html> 
    <head></head> 
    <body> 
     Hello world! One fine translation: {% trans %}one.fine.translation{% endtrans %} 
    </body> 
</html> 

Вставка второй trans-endtrans этикетки, пустую страницу !! Это дает пустую страницу:

<html> 
    <head></head> 
    <body> 
     Hello world! 
     One fine translation: {% trans %}one.fine.translation{% endtrans %} 
     Second fine translation: {% trans %}second.fine.translation{% endtrans %} 
    </body> 
</html> 

Вставка простой переменной веточки, пустая страница! Это дает пустую страницу:

<html> 
    <head></head> 
    <body> 
     Hello world! 
     {{ my_variable }} 
    </body> 
</html> 

Опять же, если я просто удалить один регистр из тех, которые должны быть перечислены на странице, он работает всегда.


Edit 2 (подробнее):

Каждый раз, когда я очистить кэш, кажется, работает один раз. Но только один раз! т.е .:

  1. я запросить страницу
  2. я получаю знаменитую пустую страницу
  3. очистить кэш-память (rm -rf app/cache)
  4. Я перезагрузить страницу
  5. Страница просмотрена правильно !!!
  6. Я перезагружаюсь снова
  7. Я ужасно снова получаю пустоту, и поэтому я делаю дополнительное время, чтобы перезагрузить страницу.

Итак ... что-нибудь связанное с кэшем Symfony ????


Я действительно не верю, что у меня есть суперточный ответ, чтобы решить мою проблему. Мне просто интересно, кто-нибудь из ваших читателей когда-то прошел через такую ​​странную проблему, и если бы вы видели что-либо в отношениях доктрины, которые могли бы вызвать это.

Также было бы полезно использовать другие способы проверки других журналов, где я мог бы найти причину этого беспорядка. Apache.error.log не показывает много. Любой журнал доктрины? Я действительно не знаю, где еще искать мое решение.

Или любые другие конфигурации или что-то делать с кешем Symfony2?

+0

Возможно, что-то в вашем представлении Twig. Попробуйте удалить переменные, пытающиеся получить доступ к вашим объектам. –

+0

Хорошо, я попробую это. Но я не думаю, что он что-то разрешит, потому что, как я уже сказал, я записываю в журнал полный сгенерированный отклик (который генерируется из шаблона ветви). Это последний шаг в контроллере перед возвратом такого ответа. Во всяком случае, я попробую что-нибудь вокруг, и я скажу, что я получу. Еще раз спасибо – ElPiter

+0

Да, извините, что не очень помог, я отчетливо помню, как ударился головой о стену из-за той же самой точной проблемы, но я не могу вспомнить решение ... –

ответ

0

Хорошо.

Я, наконец, получил его на работу.

Это определенно проблема с памятью. Я думаю, что Doctrine2 иногда плохо управляет памятью.

Это было действительно сложно, потому что я получал ошибку в своей тестовой среде, где в любом журнале, отладочной панели или на экране отображалась ошибка.

Как только я получил, чтобы воспроизвести ту же ошибку в локальной сети, я довольно быстро увидел точную строку кода, в которой произошла ошибка.

Итак, дети, когда у вас есть совершенно пустая страница, подумайте, что вы можете устранить некоторые проблемы с памятью и справиться с воспроизведением ошибки в какой-либо среде, если вы знаете, что ведение журнала работает правильно.