source: aowow/includes/db.php

Last change on this file was 170, checked in by maron, 15 years ago
  • Property svn:executable set to *
File size: 3.7 KB
Line 
1<?php
2
3// Настройки
4require_once 'configs/config.php';
5// Библиотека для работы с БД - http://dklab.ru/lib/DbSimple
6require_once 'includes/DbSimple/Generic.php';
7
8// Массив настроек
9global $AoWoWconf;
10
11// Подключение к БД мангос (версия 3 :) )
12$DB = DbSimple_Generic::connect("mysql://".$AoWoWconf['mangos']['user'].":".$AoWoWconf['mangos']['pass']."@".$AoWoWconf['mangos']['host']."/".$AoWoWconf['mangos']['db']);
13$DB->setErrorHandler('databaseErrorHandler');
14$DB->setIdentPrefix($AoWoWconf['mangos']['aowow']);
15$DB->query('SET NAMES ?', 'utf8');
16// Подключение к БД realmd
17if($AoWoWconf['realmd'])
18{
19 $rDB = DbSimple_Generic::connect("mysql://".$AoWoWconf['realmd']['user'].":".$AoWoWconf['realmd']['pass']."@".$AoWoWconf['realmd']['host']."/".$AoWoWconf['realmd']['db']);
20 $rDB->setErrorHandler('databaseErrorHandler');
21 $rDB->query('SET NAMES ?', 'utf8');
22}
23// Код обработчика ошибок SQL.
24function databaseErrorHandler($message, $info)
25{
26 // Если использовалась @, ничего не делать.
27 if (!error_reporting()) return;
28 // Выводим подробную информацию об ошибке.
29 echo "SQL Error: $message<br><pre>";
30 print_r($info);
31 echo "</pre>";
32 exit();
33}
34// Для отладки разкомментировать строку ниже
35if($AoWoWconf['debug'])
36 $DB->setLogger('myLogger');
37function myLogger($db, $sql)
38{
39 global $smarty;
40 $smarty->uDebug('!DbSimple', $sql,5000);
41}
42
43// КЕШИРОВАНИЕ // PRECACHING
44/*
45Содержание файла:
46=========================
47cache_delete_timestamp
48serialized data
49serialized allitems
50serialized allspells
51serialized exdata
52serialized zonedata
53=========================
54*/
55$cache_types = array(
56 1 => 'npc_page',
57 2 => 'npc_listing',
58
59 3 => 'object_page',
60 4 => 'object_listing',
61
62 5 => 'item_page',
63 6 => 'item_tooltip',
64 7 => 'item_listing',
65
66 8 => 'itemset_page',
67 9 => 'itemset_listing',
68
69 10 => 'quest_page',
70 11 => 'quest_tooltip',
71 12 => 'quest_listing',
72
73 13 => 'spell_page',
74 14 => 'spell_tooltip',
75 15 => 'spell_listing',
76
77 16 => 'zone_page',
78 17 => 'zone_listing',
79
80 18 => 'faction_page',
81 19 => 'faction_listing'
82);
83function save_cache($type, $type_id, $data, $prefix = '')
84{
85 global $cache_types, $allitems, $allspells, $AoWoWconf, $exdata, $zonedata;
86
87 $type_str = $cache_types[$type];
88
89 if(empty($type_str))
90 return false;
91
92 // {$type_str}_{$type_id}.aww
93 $file = fopen($prefix.'cache/mangos/'.$type_str.'_'.$type_id.'_'.$_SESSION['locale'].'.aww', 'w+');
94
95 $time = time()+$AoWoWconf['aowow']['cache_time'];
96
97 if(!$file)
98 return false;
99
100 // записываем дату в файл
101 fputs($file, $time);
102 fputs($file, "\n".serialize($data)."\n");
103 if($allitems)
104 fputs($file, serialize($allitems));
105 fputs($file, "\n");
106 if($allspells)
107 fputs($file, serialize($allspells));
108 fputs($file, "\n");
109 if($exdata)
110 fputs($file, serialize($exdata));
111 fputs($file, "\n");
112 if($zonedata)
113 fputs($file, serialize($zonedata));
114
115 fclose($file);
116
117 return true;
118}
119function load_cache($type, $type_id)
120{
121 global $cache_types, $smarty, $allitems, $allspells, $exdata, $zonedata;
122
123 $type_str = $cache_types[$type];
124
125 if(empty($type_str))
126 return false;
127
128 $data = @file_get_contents($prefix.'cache/mangos/'.$type_str.'_'.$type_id.'_'.$_SESSION['locale'].'.aww');
129 if(!$data)
130 return false;
131
132 $data = explode("\n", $data);
133
134 if($data[0] < time())
135 return false;
136
137 if($data[2])
138 $allitems = unserialize($data[2]);
139 if($data[3])
140 $allspells = unserialize($data[3]);
141 if($data[4])
142 $smarty->assign('exdata', unserialize($data[4]));
143 if($data[5])
144 $smarty->assign('zonedata', unserialize($data[5]));
145
146 return unserialize($data[1]);
147}
148?>
Note: See TracBrowser for help on using the repository browser.