Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подскажите как увеличить время соеденения с базой на PHP
 
 автор: crash_overide   (24.03.2006 в 15:03)   письмо автору
 
 

Здравствуйте! Вопрос-Если кто знает как увеличить программно на PHP время соеденения с базой Mysql при загрузке большого количества информации а собственно большого прайс-листа через скрипт?

   
 
 автор: XPraptor   (24.03.2006 в 15:05)   письмо автору
 
   для: crash_overide   (24.03.2006 в 15:03)
 

Это у хостера надо спросить, как правило хостер выделяет 30 секунд на работу скрипта.
Если он не ограничивает тебя, то можешь вот такой инструкцией выделить сколько угодно времени.
set_time_limit(600); //в секундах

   
 
 автор: crash_overide   (24.03.2006 в 15:15)   письмо автору
 
   для: XPraptor   (24.03.2006 в 15:05)
 

Спасибо

   
 
 автор: crash_overide   (24.03.2006 в 15:17)   письмо автору
 
   для: crash_overide   (24.03.2006 в 15:15)
 

А где её надо прописать где прописано соеденение с базой данных?

   
 
 автор: XPraptor   (24.03.2006 в 15:19)   письмо автору
 
   для: crash_overide   (24.03.2006 в 15:17)
 

Это на базу не влияет, это влияет на загрузку страницы и время общее php кода.
Поэтому и пишется всегда в начале, до любого вывода в страницу чего-нить.
То есть, сразу после старта сессий и заголовков (если они есть).

   
 
 автор: XPraptor   (24.03.2006 в 15:20)   письмо автору
 
   для: XPraptor   (24.03.2006 в 15:19)
 

Вот на всякий случай:

<?php
session_start
();
Header("Expires: Thu, 19 Feb 1998 13:24:18 GMT");
Header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
Header("Cache-Control: no-cache, must-revalidate");
Header("Cache-Control: post-check=0,pre-check=0");
Header("Cache-Control: max-age=0");
Header("Pragma: no-cache");
set_time_limit(600);

   
 
 автор: crash_overide   (24.03.2006 в 15:25)   письмо автору
 
   для: XPraptor   (24.03.2006 в 15:19)
 

Еще раз спасибо!

   
 
 автор: Trianon   (24.03.2006 в 15:23)   письмо автору
 
   для: crash_overide   (24.03.2006 в 15:17)
 

Если Вас волнует время связи с БД, а не время генерации ответа, значит Вы выводите не всю информацию, которую получаете от MySQL. А в этом случае стоит подумать о том, чтобы поручить фильтрацию данных серверу БД.

   
 
 автор: XPraptor   (24.03.2006 в 15:26)   письмо автору
 
   для: Trianon   (24.03.2006 в 15:23)
 

Тут Trianon прав. Нельзя так выбирать данные, чтобы не успевать вложится в отвеенное время.
Надо применять или условие, млм LIMIT для порционного вывода.

   
 
 автор: crash_overide   (24.03.2006 в 15:27)   письмо автору
 
   для: Trianon   (24.03.2006 в 15:23)
 

Trianon что то я непонял какую фильтрацию?

   
 
 автор: crash_overide   (24.03.2006 в 15:29)   письмо автору
 
   для: crash_overide   (24.03.2006 в 15:27)
 

не LIMIT понятно но это для выгрузки а мне наоборот целый прайс лист надо загрузить в базу

   
 
 автор: Trianon   (24.03.2006 в 15:42)   письмо автору
 
   для: crash_overide   (24.03.2006 в 15:29)
 

Если идет процесс импорта в базу, его надо выполнять поблочно. То есть по несколько [десятков | сотен | тысяч ] строк на один запрос INSERT. Это сильно уменьшает и нагрузку и время выполнения.

   
 
 автор: Trianon   (24.03.2006 в 15:33)   письмо автору
 
   для: crash_overide   (24.03.2006 в 15:27)
 

SELECT .... FROM ..... WHERE условие LIMIT с_какой_строки,сколько_строк

   
 
 автор: XPraptor   (24.03.2006 в 15:34)   письмо автору
 
   для: Trianon   (24.03.2006 в 15:33)
 

А, тогда ясно. Ты учитывай, что 2 мега тока можна за раз.
Поэтому лучше разбей на части по одному мегу и качай, иначе постоянно выпадать будешь из за превышения лимита.

   
 
 автор: crash_overide   (24.03.2006 в 15:46)   письмо автору
 
   для: Trianon   (24.03.2006 в 15:33)
 

Да нет Вы меня не поняли мне не выгрузка нужна а берется экселевский прайс лист и загружается в базу одновремено проверяя если такой товар существует то эта строка не загружается. Так проблема в том что неуспевается обрабатываться весь файл и обрывается загрузка

   
 
 автор: XPraptor   (24.03.2006 в 15:53)   письмо автору
 
   для: crash_overide   (24.03.2006 в 15:46)
 

А, тогда set_time_limit() спасет.

   
 
 автор: Trianon   (24.03.2006 в 15:59)   письмо автору
 
   для: crash_overide   (24.03.2006 в 15:46)
 

Я то Вас прекрасно понял. А вот Вы - задачу - не уверен.
На всякий случай советую посмотреть, что делает оператор INSERT IGNORE

   
 
 автор: XPraptor   (24.03.2006 в 16:05)   письмо автору
 
   для: Trianon   (24.03.2006 в 15:59)
 

Да скорее всего при обработке csv от экселя, даже с INSERT IGNORE не уложишься в отведенное время.
Поэтому действительно надо увеличить время для работы скрипта.

   
 
 автор: Trianon   (24.03.2006 в 16:08)   письмо автору
 
   для: XPraptor   (24.03.2006 в 16:05)
 

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

   
 
 автор: XPraptor   (24.03.2006 в 16:10)   письмо автору
 
   для: Trianon   (24.03.2006 в 16:08)
 

Это точно :-) Файлик не мешало бы разбить.

   
 
 автор: crash_overide   (24.03.2006 в 16:11)   письмо автору
 
   для: Trianon   (24.03.2006 в 16:08)
 

И как мне блоками напилить?

   
 
 автор: Trianon   (24.03.2006 в 16:14)   письмо автору
 
   для: crash_overide   (24.03.2006 в 16:11)
 

А сколько у Вас позиций в прайсе?
И какой примерно размер csv?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования