Поддержка нескольких баз данных одним сайтом: метод свитч

Автор HePeajl, 2013 Март 02, 21:19

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Ключевые слова [SEO] mu onlineмодулибесплатносайтподдержка баз данныхсвитч

HePeajl

Привет всем , покажу вам мой пример поддержки нескольких баз данных одним сайтом , причина создания темы : люди просят минимум 15$ за такой модуль (может быть другим методом сделан , но...), возможно есть реализация по лучше этой и т.д...НО чтото я не встречал на форуме такого в безплатном виде , так вот держите ;)

В корень сайта
if    (isset($_POST['select_serv']))
{
$select_serv            =    $_POST['select_serv'];
setcookie("server",    $select_serv,    time() + 155520000, "/");
$_COOKIE['server']    =    $select_serv;
$select_serv            =    NULL;
}
$server    =    $_COOKIE['server'];
if    (empty($server))
{
$server    =    $web['server'];
}
switch($server)
{
case    'start':
$conn    =    mssql_connect($connect['IP'],    $connect['login'],    $connect['pass'])    or    die("<center>Can't Connect To MS SQL Server</center>");
$db        =    mssql_select_db($connect['database'],    $conn)    or    die("<center>Can't Connect To Database</center>");

$connect['IP']            =    "127.0.0.1";    //    server IP
$connect['login']        =    "login";            //    server login
$connect['pass']        =    "password";        //    server password
$connect['database']    =    "MuOnline";        //    database name
break;
case    'serv1':
$conn    =    mssql_connect($connect['IP'],    $connect['login'],    $connect['pass'])    or    die("<center>Can't Connect To MS SQL Server</center>");
$db        =    mssql_select_db($connect['database'],    $conn)    or    die("<center>Can't Connect To Database</center>");

$connect['IP']            =    "127.0.0.1";    //    server IP
$connect['login']        =    "login";            //    server login
$connect['pass']        =    "password";        //    server password
$connect['database']    =    "MuOnline";        //    database name
break;
case    'serv2':
$conn    =    mssql_connect($connect['IP'],    $connect['login'],    $connect['pass'])    or    die("<center>Can't Connect To MS SQL Server</center>");
$db        =    mssql_select_db($connect['database'],    $conn)    or    die("<center>Can't Connect To Database</center>");

$connect['IP']            =    "127.0.0.1";    //    server IP
$connect['login']        =    "login";            //    server login
$connect['pass']        =    "password";        //    server password
$connect['database']    =    "MuOnline2";        //    database name
break;
case    'serv3':
$conn    =    mssql_connect($connect['IP'],    $connect['login'],    $connect['pass'])    or    die("<center>Can't Connect To MS SQL Server</center>");
$db        =    mssql_select_db($connect['database'],    $conn)    or    die("<center>Can't Connect To Database</center>");

$connect['IP']            =    "127.0.0.1";    //    server IP
$connect['login']        =    "login";            //    server login
$connect['pass']        =    "password";        //    server password
$connect['database']    =    "MuOnline3";        //    database name
break;
default:
{
$server    =    "start";
$conn    =    mssql_connect($connect['IP'],    $connect['login'],    $connect['pass'])    or    die("<center>Can't Connect To MS SQL Server</center>");
$db        =    mssql_select_db($connect['database'],    $conn)    or    die("<center>Can't Connect To Database</center>");

$connect['IP']            =    "127.0.0.1";    //    server IP
$connect['login']        =    "login";            //    server login
$connect['pass']        =    "password";        //    server password
$connect['database']    =    "MuOnline";        //    database name
}
}

В темплэйт Блок Статистики(пример вывода кто онлайн на 1,2,3 сервере , и по отдельности.)
<?if($server=='start'){
@mssql_select_db("MuOnline", mssql_connect("localhost", "logins", "password"));
$result    =    mssql_fetch_array(mssql_query("select count(connectstat) as count from memb_stat where connectstat=1"));
$SERVER_COUNT_ONLINE    =    $result['count'];
echo $SERVER_COUNT_ONLINE;

@mssql_select_db("MuOnline2", mssql_connect("localhost", "logins", "password"));
$result    =    mssql_fetch_array(mssql_query("select count(connectstat) as count from memb_stat where connectstat=1"));
$SERVER_COUNT_ONLINE2    =    $result['count'];
echo $SERVER_COUNT_ONLINE2    ;

@mssql_select_db("MuOnline3", mssql_connect("localhost", "logins", "password"));
$result    =    mssql_fetch_array(mssql_query("select count(connectstat) as count from memb_stat where connectstat=1"));
$SERVER_COUNT_ONLINE3    =    $result['count'];
echo $SERVER_COUNT_ONLINE3;}

elseif($server=='serv1'){

@mssql_select_db("MuOnline", mssql_connect("localhost", "logins", "password"));
$result    =    mssql_fetch_array(mssql_query("select count(connectstat) as count from memb_stat where connectstat=1"));
$SERVER_COUNT_ONLINE    =    $result['count'];
echo $SERVER_COUNT_ONLINE;
}{
elseif($server=='serv2'){

@mssql_select_db("MuOnline2", mssql_connect("localhost", "logins", "password"));
$result    =    mssql_fetch_array(mssql_query("select count(connectstat) as count from memb_stat where connectstat=1"));
$SERVER_COUNT_ONLINE2    =    $result['count'];
echo $SERVER_COUNT_ONLINE2    ;

}{
elseif($server=='serv3'){
@mssql_select_db("MuOnline3", mssql_connect("localhost", "logins", "password"));
$result    =    mssql_fetch_array(mssql_query("select count(connectstat) as count from memb_stat where connectstat=1"));
$SERVER_COUNT_ONLINE3    =    $result['count'];
echo $SERVER_COUNT_ONLINE3;}
}?>
В темплэйт Выше блока где грузится модуль

<div id="server">
<form  action="" name="switch_serv1" method="post">
<input name="select_server" value="serv1" type="hidden">
</form>
<form name="switch_serv2" method="post" action="">
<input name="select_server" value="serv2" type="hidden">
</form>
<form name="switch_serv3" method="post" action="">
<input name="select_server" value="serv3" type="hidden">
</form>
<span onClick="switch_serv1.submit();" style="cursor:pointer;">Первый Сервер</span>
<span onClick="switch_serv2.submit();" style="cursor:pointer;">Второй Сервер</span>
<span onClick="switch_serv3.submit();" style="cursor:pointer;">Третий Сервер</span>
Всем удачи , если будут ощибки пишите , я помогу...

П.С сейчас нет возможности протестить , так как на нетбуке сижу и даже sql не хочется устанавливать , но работать вроде должно.

Profesor08

Оуу май гад. И разве вот это может работать? Копи паст это не круто. И не надо бить себя в грудь.

Balgas

Цитата: HePeajl от 2013 Март 02, 21:19  Всем удачи , если будут ощибки пишите , я помогу...

В слове "ощибки" ошибка, что делать? :trololo:

NZK


NexT


HePeajl

#5
Цитата: Profesor08 от 2013 Март 03, 02:24  Оуу май гад. И разве вот это может работать? Копи паст это не круто. И не надо бить себя в грудь.
1.там ясно написано что небыло возможности проверить
2.Копи паст?
3.Я не бью себя в грудь =) я просто решил както помочь людям с форума ...

Спойлер
<?php

/************ config *************/
$connect[0]['IP'] = "127.0.0.1";
$connect[0]['login'] = "login";
$connect[0]['pass'] = "pass";
$connect[0]['database'] = "db";

$connect[1]['IP'] = "127.0.0.2";
$connect[1]['login'] = "login1";
$connect[1]['pass'] = "pass2";
$connect[1]['database'] = "db2";

$connect[2]['IP'] = "127.0.0.3";
$connect[2]['login'] = "login3";
$connect[2]['pass'] = "pass3";
$connect[2]['database'] = "db3";
// и так далее
/*********************************/


if      (isset($_POST['select_serv']))
$_SESSION["sserver"] = (int)$_POST['select_serv']; // упихиваем в сессию, в начале файла индекса должно стоять session_start(); Чтобы работал механизм сессий

// где-то, где нужно ставим "свитчер"

if (!$connect[$_SESSION["sserver"]]['IP']) //если не существует записи, то
$_SESSION["sserver"]=0; //выставляем номер, который точно должен быть

$conn   =       mssql_connect($connect[$_SESSION["sserver"]]['IP'],     $connect[$_SESSION["sserver"]]['login'],        $connect[$_SESSION["sserver"]]['pass']) or      die("<center>Can't Connect To MS SQL Server</center>");
$db             =       mssql_select_db($connect[$_SESSION["sserver"]]['database'],     $conn)  or      die("<center>Can't Connect To Database</center>");

$result =       mssql_fetch_array(mssql_query("select count(connectstat) as count from memb_stat where connectstat=1"));
$SERVER_COUNT_ONLINE    =       $result['count'];
echo $SERVER_COUNT_ONLINE;

/* список полуится таким:
* <select name="select_serv"><option value="0">Сервер 1</option><option value="1">Сервер 2</option><option value="2">Сервер 3</option></select>
* при добавлении сервера, добавляем в список позицию и все
*/
[свернуть]


=) так думаю цену на такого рода модуль ты сбавиш)


спасибо ермак-у.

Profesor08

#6
Воо. Тут уже другое дело. Давай развивай идею.

HePeajl

Цитата: Profesor08 от 2013 Март 03, 13:00  Воо. Тут уже другое дело. Давай развивай идею.
Это пример с комментами , думаю кто захочет доделает как ему удобно, а если будут проблемы , постараюсь помочь..

Profesor08

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

HePeajl

#9
Цитата: Profesor08 от 2013 Март 04, 01:47  Тут не без если. Проблемы обязательно будут. Я уже не говорю, что без знаний php тут ничего не сделаешь. А со знаниями, можно и самому.
для работы осталось только форму доделать , что там сложного?


Спойлер
<form name='selsrv' id='selsrv' method='POST'>
<select name="select_serv" onChange='document.selsrv.submit();'>
<option value="0">Первый Сервер</option>
<option value="1">Второй Сервер</option>
</select>
</form>
[свернуть]

Pashka


Profesor08


epmak

ЦитироватьБыло бы все так просто.
ну, вообще-то это не сложно.

На примере дева вставляться часть должна в момент.. точнее, вместо момента подключения а вторая часть в индекс сверху, чтобы получить данные + чутка подправить конфиг + несколько изменить само подключение. Так как у 90% сайт ломанный, его можно из лайсенс вынести в индекс и не клепать мозг. Я сейчас точно не помню конструкции, но смысл в том, что подключение + ряд проверок был выпилен в отдельный файлик, который заобфусцирован.
лечится не сложно. Если выложите индекс пхп и со снятой обфускацией файлик где само подключение, я скажу точнее как можно сделать.


кстати, в деве чтобы все работало следует учесть 2 вещи:
язык и кеширование, которое вроде там есть. то есть, к кешированию, точнее к файлам добавляем пиставку в виде <номер_севера>_<язык>_top.dew и не забываем пройтись по всем топам и т.д.
идею можно развить и дальше, нужно просто понимать основы архитектуры самого сайта.

Pashka

Цитата: Profesor08 от 2013 Март 28, 17:45  Было бы все так просто.

Может ты мне все таки ответишь в скайпе или в лс... или может тут стоимость напишешь за работу?

epmak

Вы какие-то странные.. я прямым текстом написал что надо сделать чтобы получить все нахаляву
нда.

Pashka

Цитата: epmak от 2013 Апр. 01, 06:24  Вы какие-то странные.. я прямым текстом написал что надо сделать чтобы получить все нахаляву (rofl)
нда.

Я DEW не знаю.... Не разберался еще с ним..

epmak

ну тык..  я тоже не знаю, что ты юзаешь.
тут http://forum.x-mu.net/topic17281.html#
и тут http://forum.x-mu.net/topic17281.html#
вполне четно описаны действия для стандартных вебов.

Похожие темы (3)