Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> импортировать кучу(100К) записей из CSV, получаю 500 Internal Server Error 
:(
    Опции темы
tempman
Дата 22.2.2010, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 15.12.2006

Репутация: нет
Всего: нет



Здравствуйте.
У меня такой вопрос:
Имеется cvs файл с  допустим 100000 строк .
По каждой строке происходят некоторые операции ( так же с запросом в бд ) а затем идет insert а таблицу.
Все это занимает достаточно долгое время и вываливается в браузер ошибка 500 Internal Server Error.

set_time_limit(0) (хотя запросов он не касается)
чтбы браузер не скучал  после каждой 1к записей шлю в браузер какие-нибудь данные
( с помощью ob_start(); ob_flush();)
Оптимизацию запросов делаю по мере своих знаний и возможностей, но тут такая специфика, что просто надо сделать очень много запросов за один вызов скрипта.
Подскажите , как заставить php скрипт дорабатывать до конца независимо от того , как долго он работает с БД.
В идеале скрипт вообще должен висеть на кроне. Вызвать его кроном почаще и обрабатывать данные порциями можно, но хотелось бы все и сразу.
Спасибо.



С удовольствием приму ссылочку на хороший док, где можно почитать о массовых апдейтах и инсертах в БД.
Спасибо. 

Это сообщение отредактировал(а) tempman - 22.2.2010, 14:57
PM MAIL   Вверх
Ипатьев
Дата 22.2.2010, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 3
Всего: 37



500 Internal Server Error - это не ошибка. Это сообщение о наличии ошибки.
Настоящая ошибка пишется в лог.
После того, как станет известна ошибка, можно говорить дальше. 

Если в идеале скрипт должен работать из шелла, то не надо его запускать из браузера вовсе, и решать проблемы, которых все равно не будет при эксплуатации.
PM MAIL   Вверх
tempman
Дата 22.2.2010, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 15.12.2006

Репутация: нет
Всего: нет



Искать в error.log ?

да, там появляется следующая ошибка: "Premature end of script headers: test_import.php"

Это сообщение отредактировал(а) tempman - 22.2.2010, 16:21
PM MAIL   Вверх
Ипатьев
Дата 22.2.2010, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 3
Всего: 37



Ну, это тоже не ошибка.
Смотрим в phpinfo() значения настроек log_errors и error_reporting()
и если они неправильные, то выставляем on и E_ALL в настройках

Добавлено через 30 секунд
а еще лучше - запускать сразу в шелле, как я уже сказал
PM MAIL   Вверх
tempman
Дата 22.2.2010, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 15.12.2006

Репутация: нет
Всего: нет



Цитата(Ипатьев @ 22.2.2010,  16:35)
Ну, это тоже не ошибка.
Смотрим в phpinfo() значения настроек log_errors и error_reporting()
и если они неправильные, то выставляем on и E_ALL в настройках

Добавлено @ 16:35
а еще лучше - запускать сразу в шелле, как я уже сказал

стоит E_ERROR, я лог ошибок перенаправляю в свой файл и при выполнении этого скрипта ошибок никаких нет...
я бы с удовольствием делал это под ssh,  да только доступа пока что нету smile а разобраться охота
да и делают же как-то  огромные апдейты и инсерты в базы ....

Это сообщение отредактировал(а) tempman - 22.2.2010, 16:58
PM MAIL   Вверх
Ипатьев
Дата 22.2.2010, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 3
Всего: 37



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

Цитата(tempman @  22.2.2010,  16:49 Найти цитируемый пост)
стоит E_ERROR

жесть.
вот это жесть. 
впервые вижу живого мазохиста.
PM MAIL   Вверх
tempman
Дата 22.2.2010, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 15.12.2006

Репутация: нет
Всего: нет



Цитата(Ипатьев @ 22.2.2010,  17:33)
Цитата(tempman @  22.2.2010,  16:49 Найти цитируемый пост)
стоит E_ERROR

жесть.
вот это жесть. 
впервые вижу живого мазохиста.

не очень вас понял,  буду рад услышать подробнее в чем я мазохист smile ? Я обычно вообще любой вывод отключаю, хотя вывод в логфайл на сервере вроде допустим.

PM MAIL   Вверх
Ипатьев
Дата 22.2.2010, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 3
Всего: 37



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

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

Это сообщение отредактировал(а) Ипатьев - 22.2.2010, 18:55
PM MAIL   Вверх
tempman
Дата 23.2.2010, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 15.12.2006

Репутация: нет
Всего: нет



Приносит вред E_ALL выводимый на экран конечному юзверю.
А логировать ошибки это хорошо.

Сам скрипт (частью которого является импорт) уже отлажен и польуется поэтому и вывод отключал.  

Но даже при E_ALL не вывалилось никаких ошибок.
PM MAIL   Вверх
Ипатьев
Дата 23.2.2010, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 3
Всего: 37



Цитата(tempman @  23.2.2010,  11:38 Найти цитируемый пост)
Приносит вред E_ALL выводимый на экран конечному юзверю.

А E_ERROR не приносит?
Цитата(tempman @  23.2.2010,  11:38 Найти цитируемый пост)
А логировать ошибки это хорошо.

Если хорошо, то зачем себя ограничивать толко одним типом ошбки?

Цитата(tempman @  23.2.2010,  11:38 Найти цитируемый пост)
Сам скрипт (частью которого является импорт) уже отлажен и польуется поэтому и вывод отключал.  

Вот это самая смешная вещь, которую я здесь когда-либо слышал.
Две главные причины:
1. Не бывает полностью отлаженных программ. 
2. Скрипт работает не в вакууме. Он работает в определенном окружении. И это окружение может измениться. Своевременно получив сообщение об ошибке, можно отследить это изменение, и исправить. 

Цитата(tempman @  23.2.2010,  11:38 Найти цитируемый пост)
Но даже при E_ALL не вывалилось никаких ошибок. 

Ну, теперь осталось самое неприятное - вернуться к нашим проблемам.
Я не знаю, что еще можно посоветовать.
Но я не очень верю в то, что никаких ошибок не возникает. 
Premature end of script headers означает, что скрипт умер молча. 
РНР скрипты не умирают молча. Если дать им возможность говорить.
Во-первых, надо убедиться еще раз в получении снформации об ошибках.
Внести, к примеру, какую-нибудь очевидную ошибку - функцию с неправильным параметром - и проверить - видим ли мы сообщение об ошибке.
Во-вторых, надо выводить отладочную информацию по ходу работы скрипта.
чтобы хотя бы узнать место, в котором он умирает

PM MAIL   Вверх
tempman
Дата 23.2.2010, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 15.12.2006

Репутация: нет
Всего: нет



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


Спасибо за участвие smile
PM MAIL   Вверх
IZ@TOP
Дата 24.2.2010, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 4
Всего: 73



А можно взглянуть на отрывок кода, где происходит обработка строки из csv файла и ее последующая вставка в БД?
Если скрипт небольшой - можно целиком.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.1152 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.