| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Базы Данных > импортировать кучу(100К) записей из CSV |
| Автор: tempman 22.2.2010, 13:40 |
| Здравствуйте. У меня такой вопрос: Имеется cvs файл с допустим 100000 строк . По каждой строке происходят некоторые операции ( так же с запросом в бд ) а затем идет insert а таблицу. Все это занимает достаточно долгое время и вываливается в браузер ошибка 500 Internal Server Error. set_time_limit(0) (хотя запросов он не касается) чтбы браузер не скучал после каждой 1к записей шлю в браузер какие-нибудь данные ( с помощью ob_start(); ob_flush();) Оптимизацию запросов делаю по мере своих знаний и возможностей, но тут такая специфика, что просто надо сделать очень много запросов за один вызов скрипта. Подскажите , как заставить php скрипт дорабатывать до конца независимо от того , как долго он работает с БД. В идеале скрипт вообще должен висеть на кроне. Вызвать его кроном почаще и обрабатывать данные порциями можно, но хотелось бы все и сразу. Спасибо. С удовольствием приму ссылочку на хороший док, где можно почитать о массовых апдейтах и инсертах в БД. Спасибо. |
| Автор: Ипатьев 22.2.2010, 15:53 |
| 500 Internal Server Error - это не ошибка. Это сообщение о наличии ошибки. Настоящая ошибка пишется в лог. После того, как станет известна ошибка, можно говорить дальше. Если в идеале скрипт должен работать из шелла, то не надо его запускать из браузера вовсе, и решать проблемы, которых все равно не будет при эксплуатации. |
| Автор: tempman 22.2.2010, 16:12 |
| Искать в error.log ? да, там появляется следующая ошибка: "Premature end of script headers: test_import.php" |
| Автор: Ипатьев 22.2.2010, 16:35 |
| Ну, это тоже не ошибка. Смотрим в phpinfo() значения настроек log_errors и error_reporting() и если они неправильные, то выставляем on и E_ALL в настройках Добавлено через 30 секунд а еще лучше - запускать сразу в шелле, как я уже сказал |
| Автор: tempman 22.2.2010, 16:49 | ||
стоит E_ERROR, я лог ошибок перенаправляю в свой файл и при выполнении этого скрипта ошибок никаких нет... я бы с удовольствием делал это под ssh, да только доступа пока что нету да и делают же как-то огромные апдейты и инсерты в базы .... |
| Автор: Ипатьев 22.2.2010, 17:33 |
| Делают. Но при этом все равно, при работе любого, отлаженного-переотлаженного скрипта все равно возникают ошибки. Поэтому надо не искать какой-то волшебный пуленепробиваемый способ, который работает всегда и везде, а исправлять возникающие ошибки. Но не всем это дано понять. жесть. вот это жесть. впервые вижу живого мазохиста. |
| Автор: tempman 22.2.2010, 18:02 | ||
не очень вас понял, буду рад услышать подробнее в чем я мазохист |
| Автор: Ипатьев 22.2.2010, 18:54 |
| что значит "вроде допустим"? я правильно понимаю, что лог с ошибками, по-вашему, приносит вред, но не сильный. И иногда его можно использовать? мазохизм - это запретить выод ошибок и сидеть, размышлять над причиной проблемы. |
| Автор: tempman 23.2.2010, 11:38 |
| Приносит вред E_ALL выводимый на экран конечному юзверю. А логировать ошибки это хорошо. Сам скрипт (частью которого является импорт) уже отлажен и польуется поэтому и вывод отключал. Но даже при E_ALL не вывалилось никаких ошибок. |
| Автор: tempman 23.2.2010, 12:12 |
| Нотисы или ерроры (если подставить какой-нибудь) логируются нормально. А так молчит ... До дотошного дебага у меня еще руки не дошли , ну похоже придется , т.к. узнать что за оно нужно... кау будут результаты тут отпишусь Спасибо за участвие |
| Автор: IZ@TOP 24.2.2010, 10:41 |
| А можно взглянуть на отрывок кода, где происходит обработка строки из csv файла и ее последующая вставка в БД? Если скрипт небольшой - можно целиком. |