2016-01-25 4 views
0

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

Я тестирую этот веб-сервис с помощью PostMan Потребовалось около 5 минут, и оно возвращает «500 Internal Server Error» без объяснения причин ошибки и без завершения процесса.

Кстати, я сделал тот же процесс в команде консоли Symfony, и это заняло около 3 минут без каких-либо проблем.

Я настроил php.ini

memory_limit = 1024M 
max_execution_time = 5000 

Так что я имею в виду, что проблема исходит от apache2?

Вот заголовок ответа взял почтальон:

Connection → close 
Content-Length → 0 
Content-Type → text/html 
Date → Mon, 25 Jan 2016 16:34:26 GMT 
Server → Apache/2.4.7 (Ubuntu) 
Vary → Authorization 
X-Powered-By → 
X-Powered-By 
Specifies the technology (ASP.NET, PHP, JBoss, e.g.) supporting the web application (version details are often in X-Runtime, X-Version, or X-AspNet-Version) 
PHP/5.5.9-1ubuntu4.14 
+0

Проверить max_execution_time и memory_limit в php.ini? –

+0

Я установил max_execution_time = 5000 memory_limit = 1024M – Sn0opr

+0

может быть так, что время соединения клиента истекает? попробуйте добавить 'ignore_user_abort (true);' – Federkun

ответ

0

Я нашел решение моей проблемы! Что я делаю, это вставка около 200 тыс. Строк в таблице базы данных, которая огромна, и symfony записывает все запросы в файл журнала.

я отключил doctrine2 SQL логгер:

$dbConnection->getConfiguration()->setSQLLogger(null); 

Все шло хорошо сейчас.

PS: Для тех, кто есть проблемы с массовой вставкой в ​​базе данных с доктриной, никогда не используйте обычный диспетчер сущностей для сохранения данных с объектами сущностей, лучше получить PDO соединить и вставить с ключом массивом => валютирования данные и сделать для этого транзакцию.

Смежные вопросы