Autor | Zpráva | ||
---|---|---|---|
Ghosting Profil |
#1 · Zasláno: 9. 2. 2009, 22:36:59
Zdravím,
dalo by se pomocí php (vím že to jde zjistit přímo v mysql phpMyAdmin) zjistit počet dotazů do mysql db na dané stránce? |
||
Ghosting Profil |
#2 · Zasláno: 9. 2. 2009, 22:37:26
Sakra, vedle, prosím přesuňte to. Díky.
|
||
ninja Profil |
#3 · Zasláno: 9. 2. 2009, 23:14:10
Toto vetsinou poskytuje DB layer. Nejjednodusi reseni je u kazdeho volani mysql_query spustit i $pocet_dotazu++;
|
||
Michal666 Hosting web4ce.cz Profil |
#4 · Zasláno: 10. 2. 2009, 10:29:43
ninja
Jojo a nejlepe pres nejakou globalni promenou, pro jistotu, kdyby se vytvarelo vice instaci tridy. |
||
Ghosting Profil |
#5 · Zasláno: 10. 2. 2009, 15:44:07
To bude problem, ponevadz pouzivam CMS, myslel jsem ze to jde mi nejak mimo.
|
||
jirifogl Hosting flyweb.cz Profil |
#6 · Zasláno: 10. 2. 2009, 16:26:50
To by nemusel být problém, pokud je CMS napsaný aspoň maliličko rozumně, půjde to i na úrovni PHP, i když to chce zásah do jeho kódu.
Za předpokladu, že s databází se pracuje přes objekty, ne procedurálním stylem, stačí vytvořit třídu zhruba tímhle stylem: class MyDBWatcher extends mysqli { public $querycount = 0; public function query($sql) { $this->querycount++; parent::query($sql); } } Potom je jen potřeba v kódu CMS vyhledat všechny new mysqli new MyDBWatcher Na konci stránky si pak stačí přečíst proměnnou $querycount. S procedurálním stylem by to šlo taky, ale za cenu mnohem větších zásáhů do kódu, to už by se vylatilo spíš posunout to sledování o úroveň níž a odchytávat přímo síťový provoz mezi webserverem a SQL serverem. |
||
Michal666 Hosting web4ce.cz Profil |
#7 · Zasláno: 11. 2. 2009, 11:01:46
Ghosting
O jaky CMS se jedna? Pouziva nejakou db knihovnu? Pokud ano je mozne ze toto jiz ma v sobe a staci napriklad zapnout debug mode. |
||
Ghosting Profil |
#8 · Zasláno: 11. 2. 2009, 19:48:01
jirifogl
Ahoj, díky za post, bohužel PHP moc nerozumím, každopádně zasahovat do CMS se mi moc nechce, podle toho co popisujete bych musel upravit asi mnoho souborů. Michal666 Jde o www.sunlight-cms.net , debud mod (asi) neobsahuje. Myslel jsem ze by to slo vytahnout z nejakeho infa od mysql DB, nezavazne na CMS a pod. mmm - prosím o přesunutí do sekce "PHP" |
||
jirifogl Hosting flyweb.cz Profil |
#9 · Zasláno: 11. 2. 2009, 23:14:45
Ghosting
„zasahovat do CMS se mi moc nechce“ pak jsem asi špatně rozuměl tomu, že to chcete provést na úrovni PHP |
||
Michal666 Hosting web4ce.cz Profil |
#10 · Zasláno: 12. 2. 2009, 09:25:02
Ghosting
Zjistit to na mysql serveru samozrejme jde, ale to byste na tom mysql serveru musel byt sam, protoze pocty dotazu se pocitaji od vsech uzivatelu dohromady. |
||
Aesir Profil |
#11 · Zasláno: 12. 2. 2009, 11:34:18
Ghosting:
„každopádně zasahovat do CMS se mi moc nechce“ V případě tohodle "CMS" to asi aní není moc nadějné, nakoukl jsem do zdrojáků a postrádám tam nějaký návrh aplikace, vizte např.: if($process){ echo '<h2>'.$_lang['global.result'].'</h2><br />'; $query=@mysql_query($sql); Takže žádná oddělená db vrstva, v tomhle případě to asi možné nebude (via php). |
||
jirifogl Hosting flyweb.cz Profil |
#12 · Zasláno: 12. 2. 2009, 12:25:20
Uff, jestli je to taková prasečina, jak píše Aesir, tak potěš koště. Sám tenhle CMS neznám, ale pokud máte k dispozici nějaký unixový systém (Linux, BSD, Solaris, mělo by to být všude stejné), můžete zkusit ještě toto:
V každém adresáři, který obsahuje nějaké PHP soubory tohoto CMS, spusťte tenhle příkaz: sed -i 's/mysql_query/mymysql_query/g' *.php Pak na začátek index.php přidejte tenhle kód: $SQLQUERYCOUNT = 0; function mymysql_query($sql) { $SQLQUERYCOUNT++; return mysql_query($sql); } A někde na konci si udělejte výstup proměnné $SQLQUERYCOUNT. Ten unixový příkaz sed dělá jen tolik, že najde všechny výskyty volání fce mysql_query ve všech *.php souborech a nahradí je voláním mymysql_query(), což je opět mezivrstva, která navýší čítač a předává věci běžnému mysql_query. Tzn. že nemusíte shánět žádný unix, pokud máte editor, který zvládne hledat a nahrazovat ve více souborech současně, případně pokud ten Váš CMS má dostatečně málo PHP souborů, aby se Vám chtělo každý otevřít a hledání/nahrazení tam provést ručně Než byste ale tohle celé provedl, připravte se na to, že to už je opravdu velký zásah do kódu. Takže to klidně někde může přestat fungovat a Vy budete muset kód prozkoumat a zjistit, proč prosté nahrazení nefunguje. A samozřejmě - až se toho budete chtít zase zbavit, tak nejjednodušší bude obnova ze zálohy nebo čistá instalace. |
||
Časová prodleva: 15 let
|
0