При обращении к рнр-странице браузер предлагает ее сохранить

Asar

Новичок
При обращении к рнр-странице браузер предлагает ее сохранить

Имеется пара страниц. На первой расположена форма, с помощью которой можно вабрать несколько файлов на компьютере, далее файлы загружаются на сервер, а по результату работы скрипта на второй странице выводится сообщение типа "Успешно/неуспешно". Время от времени вместо вывода результата работы скрипта в ИЕксплорере видим "невозможно загрузить страницу", а в ФиреФоксе -- предложение сохранить или открыть РНР-файл скрипта.
Что-ли это происходит от долгой загрузки файлов и долгой же работы скрипта (это продолжается в районе полутора минут) или еще по каким причинам? И лечится ли?
 

Asar

Новичок
В том то и дело, что нет. На сервак файлы грузятся, потом пауза, потом часто -- описанная ситуация, но не всегда.
З. Ы. скриптик построчно запихивает в БД данные из загруженных файлов -- тысяч 10-15 строк.

-~{}~ 31.01.07 13:35:

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

Потому хочу спросить, может, я скрипт совсем неграмотный сделал, чтобы инфу из текстового файла в БД сбрасывать? Выношу его на суд:

PHP:
mysql_query('TRUNCATE TABLE `aparts`');
	$handle = fopen($_SERVER['DOCUMENT_ROOT'] ."/tmp/aparts.txt", "r");
	while (($data = fgetcsv($handle, 2000, ";", "\r")) !== FALSE) {
		if($data[10] == '') {$data[10] = 0;}
		mysql_query('INSERT INTO aparts (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13) 
		VALUES ('.$data[0].', '.$data[1].', '.$data[2].', '.$data[3].', '.$data[4].', '.$data[5].',
		'.$data[6].', '.$data[7].', '.$data[8].', '.$data[9].', '.$data[10].', '.$data[11].', '.$data[12].')');
	}
	fclose($handle);
 

Фанат

oncle terrible
Команда форума
предлагаю воспользоваться запросом LOAD DATA INFILE
 

Asar

Новичок
Дык, я потому и стал извращаться с fgetcsv, что LOAD DATA у хостера под запретом стоит.

-~{}~ 31.01.07 14:20:

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

-~{}~ 31.01.07 14:38:

Кстати, а чем файл можно подробить с помощью РНР? В справочнике функций нашел только как обрезать до какого-либо размера...
 

Asar

Новичок
Размер файла -- 1,57 MB. Изначально этот же скрипт обрабатывал еще несколько файлов (гораздо меньших), но когда я теста ради остальные файлы отключил -- ситуация, как ее можно оценить невооруженным взглядом, не изменилась.

5 полей с индексами + 1 фуллтекст.
 

Фанат

oncle terrible
Команда форума
ужас!
перед вставкой убираешь индексы, после вставки - добавляешь
 

Lews

Новичок
+ к этому
Попробуйте отправлять не по одному инсерту, а сразу штук по 100:
insert into `table` (p1....p9) values (v1....v9),(v1....v9),(v1....v9).....

Мне когда-то помогло в отсутствие load data.
 

Asar

Новичок
С индексами помогло, скрипт не доходит до конца теперь реже, но все равно бывает...
2Lews
Несмотря на пример, до меня не дошло каким образом и зачем вставлять сразу 100 инсертов. Можно чуть поподробнее?
Спасибо.
 

Фанат

oncle terrible
Команда форума
каким образом - обычным.
зачем - тебе знать не обязательно.

-~{}~ 01.02.07 13:01:

но сдается мне, что ты гонишь.
ты уверен, что убрал все индексы? полтора метра в базу закинуть - это не 30, а 3 секунды
 

Asar

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

Автор оригинала: Фанат
но сдается мне, что ты гонишь.
ты уверен, что убрал все индексы? полтора метра в базу закинуть - это не 30, а 3 секунды
Вообще, учитывая тот факт, что индексы я убивал через phpMyadmin, гнать я могу. Но с другой стороны, там вроде бы и путать нечего, если я их даже обратно сейчас не ставлю, а для ради эксперимента удалил их вообще...
 

Asar

Новичок
Итак. ALTER TABLE aparts DROP PRIMARY KEY
Как и до этой команды, пхпадмин пишет "Индекс не определен!"

Сегодня вообще вставляется всего 300-2000 строк и ни разу не вышло полностью.

При этом в том же самом админе прописано, что индекс занимает 1024 Bytes.
 

legend

Новичок
Asar
а при формировании запросов нет ли ошибок? Т.е. может стоит проверить содержимое массивов $data?
 

Asar

Новичок
Дык, проблема не в наличии ошибок. Дело в том, что скрипт до конца не успевает доходить из-за таймаута. Т. е. укороченный файл успеет всегда, подлиннее -- иногда, а самый объемный -- вообще не успевает никогда. В результате чего мне предлагается сохранить страницу или "страница не найдена" в зависимости от браузера.
 

Фанат

oncle terrible
Команда форума
сколько времени занимает один запрос?
сколько запросов всего?
 

Asar

Новичок
Щас на всякий пожарный проверил еще раз на локальном компе, все нормально за 3 секунды экспортнулось...

По времени запросов -- а каким образом можно измерить (поиском не нашел)? Всего запросов в районе 15000.
 
Сверху