Connect&Query

Статус
Закрыто для дальнейших ответов.

Abrogen

Убью нахер
Регистрация
18.08.2010
Сообщения
190
Вопрос таков: Хорошо ли, если каждый запрос к БД сопровождается подключением к БД. То есть: 10 запросов к БД = 10 подключениям к БД
 

brevis

Well-Known Member
Регистрация
10.08.2010
Сообщения
452
То есть после каждого запроса отключаемся? Вообще принято отключаться от БД когда к ней не будем больше обращаться. Тогда и не нужно будет подключаться при каждом запросе.
 

kein

Частный случай
Регистрация
23.11.2009
Сообщения
446
Конечно не хорошо.
открытие сокета - раз запрос
выбор базы - два запрос
выбор collaction, names - еще 1-2 запроса.

В данном случае я имею ввиду не sql запросы.

В чем смысл?
 

Serg@NT

Well-Known Member
Регистрация
20.02.2010
Сообщения
506
А можно глупый вопрос, вроде как соединение разрывается либо принудительно, либо по умолчанию автоматически, когда не требуется (после выполнения скрипта). Зачем вам этот гемор, обрабатывать лишние соединения-разъединения.
 

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
Если Вы хотите своими запросами уложить сервер хостера, то Вы на правильном пути! :wacko:
 

Abrogen

Убью нахер
Регистрация
18.08.2010
Сообщения
190
А можно глупый вопрос, вроде как соединение разрывается либо принудительно, либо по умолчанию автоматически, когда не требуется (после выполнения скрипта). Зачем вам этот гемор, обрабатывать лишние соединения-разъединения.
Для обработки запросов к БД у меня создан отдельный класс. Что бы как-то снизить вероятность описки (как у меня это часто бывает) и сделать код менее объёмным, я решил встроить подключение и отключение к базе данных в запрос. Всё работает. А теперь, вот, думаю, хорошо ли это будет для хостера. По вашим ответом, я вижу, что нет, поэтому буду переделывать.
 

kein

Частный случай
Регистрация
23.11.2009
Сообщения
446
Писал я как-то класс, для работы с БД, позволяет удобно оперировать с запросами, передавать их как объекты и собирать по кускам не вдаваясь в подробности, могу показать если интересует.
 

Abrogen

Убью нахер
Регистрация
18.08.2010
Сообщения
190
Писал я как-то класс, для работы с БД, позволяет удобно оперировать с запросами, передавать их как объекты и собирать по кускам не вдаваясь в подробности, могу показать если интересует.
Если только на всеобщее обозрение, а я уже сделал, как мне нужно.
 

kein

Частный случай
Регистрация
23.11.2009
Сообщения
446
Конечно на всеобщее)
Код:
namespace kd;
db::load('main')->config(array('db'=>'main_db','host'=>'localhost','user'=>'root')); // пример задания конфига подключения к базе
db::load('external')->config(array('db'=>'exthost','host'=>'mysql.ext.com','user'=>'user')); // пример задания конфига подключения ко базе второй базе
$select = db::select()->from('table'); // По умолчанию используется подключение к базе с конфигом main
// .. Some code
$select->where('tag like '%?%' OR name = ?', array('?'=>$name));
// .. Some code
$select->order('id')->fields(array('name'=>'mod_name'))->fields('id','tag');
while($r = $select->fetch()){
    echo $r['mod_name'].$r['id'].$r['tag'];
}
// А так используем подключение ко второй базе external
echo db::load('external')->insert()->into('table')->fields($data)->insert_id();
Файлы подгружаются через autoload стандартным разбиением на _. То есть db_sql_method -> ./db/sql/method.php автолоад я отправлять не буду, там буквально.
Подключения к базе не происходит до тех пор пока она не потребуется, то есть если ты не использовал запросов, подключения не произойдет совсем.
А так же используется еще один клас, буквально в паре мест debug. Его можно использовать так:
Код:
namespace kd;
function error_handler($errno, $errstr, $errfile, $errline){
    debug::add($errstr, $errno, $errfile, $errline);
    return true;
}
set_error_handler('kd\error_handler');// тут мы биндим ошибки на него, что бы он собирал их
debug::show(); // А так выводим в удобном виде инфу о всех проишествиях по ходу работы скрипта.
Оба расширения работают в неймспейсе kd; в php 5.3 и выше. Но сделать даунгрейд до старых версий не составит труда.
Работа с базой подразумевала еще много интересных фишек, но все не могу собраться и дописать их, вдруг у тебя получится :)

Да кстати можно писать запросы даже так:
Код:
$update = db::update();
// .. Some code
$update->where('time < '.time());
// .. Some code
$update->fields($data);
// ..
echo $update->table('log')->affected_rows();
А логика функции fileds() - в некоторых местах может быть совсем безумной, стоит посмотреть код, позволяет быстро собирать запросы и оперировать данными. Мне это дополнение классов существенно облегчает работу.
 

Вложения

  • 9,6 КБ Просмотры: 21
  • 2,2 КБ Просмотры: 20

Abrogen

Убью нахер
Регистрация
18.08.2010
Сообщения
190
Если бы ещё разобраться во всём этом. Нет, всё-таки свой код лучше, в нём хотя бы ясно, что и откуда )). У меня короткий код получилось с обработкой ошибок под отдельный класс. Всё устраивает. И без лишних хлопот ) :)
 

kein

Частный случай
Регистрация
23.11.2009
Сообщения
446
Как писали в соседнем топике "Может кому пригодится" :happy:
Или кто захочет просто изучить любопытства ради ;)
 

Abrogen

Убью нахер
Регистрация
18.08.2010
Сообщения
190
Я может быть тоже изучил, вот было бы больше времени, его иногда не хватает даже на собственный проект, к сожалению.
 
Статус
Закрыто для дальнейших ответов.
Верх Низ