14 / 14 / 2
Регистрация: 22.09.2010
Сообщений: 227
1

Подключение к бд через отдельный файл

08.08.2012, 17:03. Показов 13636. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!
На сайте на многих страницах нужно производить манипуляции с бд.
Раньше тупо во всех скриптах писал вот так:

PHP
1
2
3
4
5
<?php
$link = mysql_connect('бла-бла', 'бла-бла', 'бла-бла');
mysql_select_db('бла-бла', $link);
mysql_query ('SET NAMES utf8');
?>
И в конце каждого скрипта добавлял:
PHP
1
<?php mysql_close($link); ?>
Теперь пришло понимание, что этот способ ужасен по многим причинам.

Возникает несколько вопросов:
Что лучше вынести в отдельный файл? Если вынесу вот это дело в файл inc/connectbd.php и буду инклудить его на всех нужных страницах?
PHP
1
2
3
4
5
<?php
$link = mysql_connect('бла-бла', 'бла-бла', 'бла-бла');
mysql_select_db('бла-бла', $link);
mysql_query ('SET NAMES utf8');
?>
Это будет правильно? Или для каждого скрипта новое подключение?
Как грамотно все эти подключения закрывать? Раньше сталкивался с too many connections, больше не хочу.

Добавлено через 4 минуты
Вот в этом гайде http://it-guest.net.ru/web/reg-and-auth-users-php/ выносят весь коннект в отдельный файл и инклудят его там, где необходимо. Это подключение т.е. будет висеть открытым постоянно? Так правильно?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.08.2012, 17:03
Ответы с готовыми решениями:

Notepad++: подскажите как вытащить результаты поиска через регулярку в отдельный файл
Необходимо вытащить все email из большущего текста в столбик. Поиск регуляркой увенчался успехом,...

Подключение через конфигурационный файл
Здравствуйте, только начал разбираться в C++, возник вопрос как вынести настройки подключения к бд...

Подключение сообственного класса через файл
Я написал простенький код через классы, и мне бы хотелось описать сам класс в дополнительном файле...

Подключение к MS SQLServer через ADO+udl файл
Доброго времени суток. Столкнулся с такой проблемой. При настройке подключения в ADOConnection...

13
2430 / 2281 / 593
Регистрация: 27.05.2011
Сообщений: 7,796
08.08.2012, 17:05 2
Цитата Сообщение от Wir2al Посмотреть сообщение
Если вынесу вот это дело в файл inc/connectbd.php и буду инклудить его на всех нужных страницах?
ну так ни дано если вы используйте процедурный подход , если у вас сменится сервер вам надо будет лишь в одном месте поменять а не во всех файлах
Цитата Сообщение от Wir2al Посмотреть сообщение
Или для каждого скрипта новое подключение?
такто и так на каждой странице произойдет подключение заново

Добавлено через 48 секунд
Цитата Сообщение от Wir2al Посмотреть сообщение
Раньше сталкивался с too many connections
юзайте тогда include_once
1
14 / 14 / 2
Регистрация: 22.09.2010
Сообщений: 227
08.08.2012, 17:10  [ТС] 3
crautcher, я сталкивался с этой проблемой ещё когда не инклудил общий для всех файл, а прописывал во всех скриптах это. И не закрывал подключения. Если вынести все в общий файл, то изменений же никаких не будет, тупо легче менять настройки подключения сразу для всего сайта будет и все. Фактически же на каждой странице будет точно так же создаваться новое подключение. Как его грамотно закрывать на всех страницах и нужно ли это делать вообще?
Цитата Сообщение от crautcher Посмотреть сообщение
юзайте тогда include_once
естественно
0
2430 / 2281 / 593
Регистрация: 27.05.2011
Сообщений: 7,796
08.08.2012, 17:23 4
Цитата Сообщение от Wir2al Посмотреть сообщение
Как его грамотно закрывать на всех страницах и нужно ли это делать вообще?
php.net :
В использовании mysql_close() обычно нет надобности для непостоянных соединений, т.к. они автоматически закрываются в конце скрипта.
если уж принципиально хотите его закрыть можете в свой инклюд файл добавить
PHP
1
register_shutdown_function('mysql_close');
1
14 / 14 / 2
Регистрация: 22.09.2010
Сообщений: 227
08.08.2012, 17:31  [ТС] 5
crautcher, а почему тогда раньше у меня возникала эта ошибка? И висела несколько часов на всех страницах? Было порядка 10 скриптов, на всех в начала страницы писал вот так:

PHP
1
2
3
4
5
<?php
$link = mysql_connect('бла-бла', 'бла-бла', 'бла-бла');
mysql_select_db('бла-бла', $link);
mysql_query ('SET NAMES utf8');
?>
Хостинг отличный был, дело не в нем точно.

Добавлено через 3 минуты
Забыл дописать, что этими 10 скриптами пользовались только 2-3 сотрудника (пару раз в день заходили).
0
2430 / 2281 / 593
Регистрация: 27.05.2011
Сообщений: 7,796
08.08.2012, 17:31 6
Цитата Сообщение от Wir2al Посмотреть сообщение
на всех
вот почему , include_once даст только одно подключение главному скрипту
1
14 / 14 / 2
Регистрация: 22.09.2010
Сообщений: 227
08.08.2012, 17:34  [ТС] 7
crautcher, я в курсе отличий include_once от include. Я же уже написал, что раньше я не выносил все в отдельный файл.

Добавлено через 1 минуту
Цитата Сообщение от crautcher Посмотреть сообщение
вот почему , include_once даст только одно подключение главному скрипту
Т.е. если вынести все в отдельный файл, то будет меньше подключений? Какая вообще разница? Тот же самый код выполняется, только подгружается из общего файла, а не прописан напрямую.
0
2430 / 2281 / 593
Регистрация: 27.05.2011
Сообщений: 7,796
08.08.2012, 17:39 8

ну я и говорю что теперь благодаря inluce_once будет одно соеденение , а разньше , как я могу предположит вы их плодили много

к примеру:
index.php
PHP
1
2
3
4
5
6
7
8
<?php
mysql_connect('бла-бла', 'бла-бла', 'бла-бла');
mysql_select_db('бла-бла', $link);
mysql_query ('SET NAMES utf8');
...
include 'menu.php';
...
include 'footer.php';
menu.php :
PHP
1
2
3
4
5
6
<?php
mysql_connect('бла-бла', 'бла-бла', 'бла-бла');
mysql_select_db('бла-бла', $link);
mysql_query ('SET NAMES utf8');
...
include 'submenu.php';
submenu.php :
PHP
1
2
3
4
$link = mysql_connect('бла-бла', 'бла-бла', 'бла-бла');
mysql_select_db('бла-бла', $link);
mysql_query ('SET NAMES utf8');
...
footer.php:
PHP
1
2
3
4
mysql_connect('бла-бла', 'бла-бла', 'бла-бла');
mysql_select_db('бла-бла', $link);
mysql_query ('SET NAMES utf8');
...
в итоге у нас 4 соеденения

Добавлено через 1 минуту
Цитата Сообщение от Wir2al Посмотреть сообщение
я в курсе отличий include_once от include
тогда вы в куресе если заменить это всё на include_once , то в первом файле он подключит а в остальных нет , так как уже подключен в главном
1
14 / 14 / 2
Регистрация: 22.09.2010
Сообщений: 227
08.08.2012, 17:44  [ТС] 9
crautcher, ааа, то есть будет постоянно висеть только одно подключения из файла connectbd.php? И при добавлении новых страниц не будет меняться абсолютно ничего, т.к. подключение к базе уже установлено другими скриптами? так? Я думал иначе из-за вашего же сообщения:
Цитата Сообщение от crautcher Посмотреть сообщение
такто и так на каждой странице произойдет подключение заново
0
2430 / 2281 / 593
Регистрация: 27.05.2011
Сообщений: 7,796
08.08.2012, 17:46 10
Цитата Сообщение от Wir2al Посмотреть сообщение
И при добавлении новых страниц не будет меняться абсолютно ничего, т.к. подключение к базе уже установлено другими скриптами? так?
да если файл конекта гдето был подключен , то больше не подключится , следовательно будет лишь одно подключение к базе
1
14 / 14 / 2
Регистрация: 22.09.2010
Сообщений: 227
08.08.2012, 17:47  [ТС] 11
crautcher, спасибо.
0
217 / 157 / 30
Регистрация: 11.05.2010
Сообщений: 614
09.08.2012, 12:08 12
хм, я вот не сам коннект выносил, а только логин/парол/хост/имя бд (в переменные). получился вроде как своеобразный конфиг.
0
14 / 14 / 2
Регистрация: 22.09.2010
Сообщений: 227
09.08.2012, 16:39  [ТС] 13
kester, я и так тоже раньше делал, но как оказалось, толку от этого мало, подключений все равно будет много.
0
SergioPerm
26.02.2014, 17:54 14
Всем привет, вопрос от нуба, допустим есть файл config.php в котором содержится данные для авторизации на mysql, я слышал с сервера с помощью специальных скриптов можно выдернуть любой php файл, так ли это? ну и соответственно безопасно ли хранение данных для авторизации в таком виде?
26.02.2014, 17:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.02.2014, 17:54
Помогаю со студенческими работами здесь

Подключение Базы данных Access через ини файл
Здравствуйте. Я не могу понять как подключить базу данных через ини файл, и чтоб набор данных был...

Как вынести подключение к БД в отдельный поток?
Как вынести подключение бд в отдельный поток???Вот код программы: import android.os.Bundle;...

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

Вывести в отдельный файл, кто и когда вносил изменения в файл xls
уважаемые, кто подскажет или направит в нужном направлении Суть задачи. Вести в отдельный файлик...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru