mirror of
https://github.com/slawkens/myaac.git
synced 2025-04-26 17:29:21 +02:00
Save towns as plain PHP File in cache folder
+ Also load them on install + on reload items = better performance when in dev mode
This commit is contained in:
parent
3090989dea
commit
ab3912b378
@ -76,6 +76,13 @@ else {
|
|||||||
error(Spells::getLastError());
|
error(Spells::getLastError());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Towns::save()) {
|
||||||
|
success($locale['step_database_loaded_towns']);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
warning($locale['step_database_error_towns']);
|
||||||
|
}
|
||||||
|
|
||||||
// update config.highscores_ids_hidden
|
// update config.highscores_ids_hidden
|
||||||
require_once SYSTEM . 'migrations/20.php';
|
require_once SYSTEM . 'migrations/20.php';
|
||||||
$database_migration_20 = true;
|
$database_migration_20 = true;
|
||||||
|
@ -159,60 +159,5 @@ else {
|
|||||||
}
|
}
|
||||||
unset($tmp, $id, $vocation);
|
unset($tmp, $id, $vocation);
|
||||||
|
|
||||||
//////////////////////////////////////
|
require LIBS . 'Towns.php';
|
||||||
// load towns from database or OTBM //
|
Towns::load();
|
||||||
//////////////////////////////////////
|
|
||||||
|
|
||||||
$tmp = '';
|
|
||||||
$towns = [];
|
|
||||||
if($cache->enabled() && $cache->fetch('towns', $tmp)) {
|
|
||||||
$towns = unserialize($tmp);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if($db->hasTable('towns')) {
|
|
||||||
$query = $db->query('SELECT `id`, `name` FROM `towns`;')->fetchAll(PDO::FETCH_ASSOC);
|
|
||||||
|
|
||||||
foreach($query as $town) {
|
|
||||||
$towns[$town['id']] = $town['name'];
|
|
||||||
}
|
|
||||||
|
|
||||||
unset($query);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$mapName = configLua('mapName');
|
|
||||||
if (!isset($mapName)) {
|
|
||||||
$mapName = configLua('map');
|
|
||||||
$mapFile = $config['server_path'] . $mapName;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strpos($mapName, '.otbm') === false) {
|
|
||||||
$mapName .= '.otbm';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isset($mapFile)) {
|
|
||||||
$mapFile = config('data_path') . 'world/' . $mapName;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (file_exists($mapFile)) {
|
|
||||||
ini_set('memory_limit', '-1');
|
|
||||||
|
|
||||||
require LIBS . 'TownsReader.php';
|
|
||||||
$townsReader = new TownsReader($mapFile);
|
|
||||||
$townsReader->load();
|
|
||||||
|
|
||||||
$towns = $townsReader->get();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$towns = config('towns');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if($cache->enabled()) {
|
|
||||||
$cache->set('towns', serialize($towns), 600);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
config(['towns', $towns]);
|
|
||||||
////////////////////////////////////////////
|
|
||||||
// END - load towns from database or OTBM //
|
|
||||||
////////////////////////////////////////////
|
|
134
system/libs/Towns.php
Normal file
134
system/libs/Towns.php
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Project: MyAAC
|
||||||
|
* Automatic Account Creator for Open Tibia Servers
|
||||||
|
*
|
||||||
|
* This is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This software is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
* @package MyAAC
|
||||||
|
* @author Slawkens <slawkens@gmail.com>
|
||||||
|
* @copyright 2020 MyAAC
|
||||||
|
* @link https://my-aac.org
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class Towns
|
||||||
|
*/
|
||||||
|
class Towns
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private static $filename = CACHE . 'towns.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine towns
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function determine()
|
||||||
|
{
|
||||||
|
global $db;
|
||||||
|
|
||||||
|
if($db->hasTable('towns')) {
|
||||||
|
return self::getFromDatabase();
|
||||||
|
}
|
||||||
|
|
||||||
|
return self::getFromOTBM();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load cached towns file
|
||||||
|
*/
|
||||||
|
public static function load()
|
||||||
|
{
|
||||||
|
$towns = config('towns');
|
||||||
|
if (file_exists(self::$filename)) {
|
||||||
|
$towns = require self::$filename;
|
||||||
|
}
|
||||||
|
|
||||||
|
config(['towns', $towns]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save into cache file
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public static function save()
|
||||||
|
{
|
||||||
|
$towns = self::determine();
|
||||||
|
if (count($towns) > 0) {
|
||||||
|
file_put_contents(self::$filename, '<?php return ' . var_export($towns, true) . ';', LOCK_EX);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load from OTBM map file
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function getFromOTBM()
|
||||||
|
{
|
||||||
|
$mapName = configLua('mapName');
|
||||||
|
if (!isset($mapName)) {
|
||||||
|
$mapName = configLua('map');
|
||||||
|
$mapFile = config('server_path') . $mapName;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strpos($mapName, '.otbm') === false) {
|
||||||
|
$mapName .= '.otbm';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isset($mapFile)) {
|
||||||
|
$mapFile = config('data_path') . 'world/' . $mapName;
|
||||||
|
}
|
||||||
|
|
||||||
|
$towns = [];
|
||||||
|
if (file_exists($mapFile)) {
|
||||||
|
ini_set('memory_limit', '-1');
|
||||||
|
|
||||||
|
require LIBS . 'TownsReader.php';
|
||||||
|
$townsReader = new TownsReader($mapFile);
|
||||||
|
$townsReader->load();
|
||||||
|
|
||||||
|
$towns = $townsReader->get();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $towns;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load from database
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function getFromDatabase()
|
||||||
|
{
|
||||||
|
global $db;
|
||||||
|
|
||||||
|
$query = $db->query('SELECT `id`, `name` FROM `towns`;')->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
|
$towns = [];
|
||||||
|
foreach($query as $town) {
|
||||||
|
$towns[$town['id']] = $town['name'];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $towns;
|
||||||
|
}
|
||||||
|
}
|
@ -86,6 +86,8 @@ $locale['step_database_loaded_weapons'] = 'Weapons has been loaded...';
|
|||||||
$locale['step_database_loaded_monsters'] = 'Monsters has been loaded...';
|
$locale['step_database_loaded_monsters'] = 'Monsters has been loaded...';
|
||||||
$locale['step_database_error_monsters'] = 'There were some problems loading your monsters.xml file. Please check $LOG$ for more info.';
|
$locale['step_database_error_monsters'] = 'There were some problems loading your monsters.xml file. Please check $LOG$ for more info.';
|
||||||
$locale['step_database_loaded_spells'] = 'Spells has been loaded...';
|
$locale['step_database_loaded_spells'] = 'Spells has been loaded...';
|
||||||
|
$locale['step_database_loaded_towns'] = 'Towns has been loaded...';
|
||||||
|
$locale['step_database_error_towns'] = 'There were some problems loading your towns. You will need to configure them manually in config.';
|
||||||
$locale['step_database_created_account'] = 'Created admin account...';
|
$locale['step_database_created_account'] = 'Created admin account...';
|
||||||
$locale['step_database_created_news'] = 'Newses has been created...';
|
$locale['step_database_created_news'] = 'Newses has been created...';
|
||||||
|
|
||||||
|
@ -85,6 +85,8 @@ $locale['step_database_loaded_weapons'] = 'Załadowano bronie (weapons)...';
|
|||||||
$locale['step_database_loaded_monsters'] = 'Załadowano potworki (monsters)...';
|
$locale['step_database_loaded_monsters'] = 'Załadowano potworki (monsters)...';
|
||||||
$locale['step_database_error_monsters'] = 'Wystąpiły problemy podczas ładowania pliku monsters.xml. Zobacz $LOG$ po więcej informacji.';
|
$locale['step_database_error_monsters'] = 'Wystąpiły problemy podczas ładowania pliku monsters.xml. Zobacz $LOG$ po więcej informacji.';
|
||||||
$locale['step_database_loaded_spells'] = 'Załadowano czary (spells)...';
|
$locale['step_database_loaded_spells'] = 'Załadowano czary (spells)...';
|
||||||
|
$locale['step_database_loaded_towns'] = 'Załadowano miasta (towns)...';
|
||||||
|
$locale['step_database_error_towns'] = 'Wystąpił problem podczas ładowania miast. Trzeba będzie je skonfigurować manualnie.';
|
||||||
$locale['step_database_created_account'] = 'Utworzono konto admina...';
|
$locale['step_database_created_account'] = 'Utworzono konto admina...';
|
||||||
$locale['step_database_created_news'] = 'Utworzono newsy...';
|
$locale['step_database_created_news'] = 'Utworzono newsy...';
|
||||||
|
|
||||||
|
@ -32,4 +32,12 @@ if ($reload) {
|
|||||||
else {
|
else {
|
||||||
error(Weapons::getError());
|
error(Weapons::getError());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$towns_start_time = microtime(true);
|
||||||
|
if (Towns::save()) {
|
||||||
|
success('Successfully loaded towns (in ' . round(microtime(true) - $towns_start_time, 4) . ' seconds).');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
error('Error: No towns found.');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user