Je to už celkem dlouho, co jsem měl tenhle nápad, k realizaci jsem se dostal ale až dnes, tak jsem něco sepsal.
Upozornění:
Tohle je pre-alfa developerská verze, má jen ukázat mojí myšlenku v praxi, ověřit zájem a použitelnost.
Popis pro uživatele:
Řešení má pár výhod, je bezpečné, je také rychlé, oproti klasickým řešení je kratší. Vás vůbec nemusí zajmat struktura databáze nebo jak získat data z databáze, na vás je jen zakomponovat vrácený výsledek do vaší stránky, tedy HTML .
Popis pro developery:
Lehce rozšiřitelný framework který většinu práce obstará za vás. Je nezávislý, je mu jedno na jakém databázovém systému běží nebo jaky používáte emulator. Využívá systém ovladačů který má jesně danou strukturu, napsaní ovladače na váš emulator znamená prakticky napsat SQL datazy které bude framerowk volat, žádné mysql_query, žádné ošetřování. Stačí prostý text.
Používé objektový model, dále tzvn. lazy loading = co nepotřebujete to framework zbytečně nenačítá, co potřebujete často, urychlí intergovaná vyrovnávací pamět.
Další featurou je meziukládání náročných operací.
V tomto případě status serveru, když je server off-line a PHP se pokouší navázat spojení, tak web se zaseká. Proč? Jelikož když se navazuje spojení tak script má určitou dobu za kterou musí vzdálený server odpovědět, tato doba je ale dlouhá a proto se stránka načítá klidně několik sekund (v normálním stavu server odpoví v řádu milisekund). Aneb když spadne server, tak spadne i web.
Takže status se neověřuje furt ale jen jednou za 30 sekund, při výpadku bude první náštevník mít web spomalený, ale druhý už ne.
Ukázka:
Pro ukázku uvádím Mysql driver a emulátor TrinityCore (jiné ovladače zatím neexistují). Popis kódu mluví za vše, kdyby se to ujalo další funkce by mohli být: registrace, výpis online hráčů a cokoliv dalšího co je na webu potřeba .
<?php
// krok 1: nacteme knihovny
require_once dirname(__FILE__)."/WApi/WApiLoader.php";
// krok 2: vytvorime konfiguraci
$config = array(
"driver" => "Mysql", // databazovy server
"emulator" => "TrinityCore", // druh emulatoru
"server" => "localhost", // databazovy server
"user" => "local", // uzivatel
"password" => "local", // heslo
"auth" => "wow_auth", // databaze realmu
"characters" => "wow_characters", // databaze charakteru
"world" => "wow_world", // databaze worldu
"status" => array( // konfigurace statusu, IP + PORT world serveru
"ip" => "127.0.0.1",
"port" => 8085,
),
);
// krok 3: vytvorime instanci a nacteme konfiguraci
$api = new WApi($config);
// krok 4: libovne pouzivame
// nasledujici funkce vypisou vzdy cislo, tedy pocet
echo "Počet online hráčů: ".$api->countOnline()."<br />";
echo "Počet online hordy: ".$api->countOnlineHorde()."<br />";
echo "Počet online aliance: ".$api->countOnlineAlliance()."<br />";
echo "Počet online gm: ".$api->countOnlineGm()."<br />";
// nasledujici funkce vypise jednu z hodnot: online / offline
echo "Server je ".$api->getStatus()."<br />";
// to je vse, vic jsem nestihl
Doufám že to pro pochopení stačí.
Instalace:
Stačí nakopírovat knihovnu (tedy celou složku WApi z archivu) do vašeho webu.
Potom použít dle scriptu nahoře.
Licence:
Projekt je uvolněn pod licencí GPL - http://cs.wikipedia.org/wiki/GNU_General_Public_License
Stručně řečeno, program je zdarma, je opensource, program můžete kopírovat, upravovat, cokoliv co chcete.
ALE při využití programu nebo jenom jeho částí váš projekt spadá automaticky pod stejnou licenci, tedy GPL.
Ještě stručněji: je zakázáno cokoliv z programu prodat
Získání:
Aktuální verze je vždy na bitbucket - https://bitbucket.org/wtfko/wowapi/
Cíl:
Univerzální framework co obstará vše kolem spojení vašeho webu a serveru.