V predchádzajúcich týždňoch sme sa venovali niektorým nástrojom na ladenie pre MySQL aj PHP, ktoré môžu byť veľmi užitočné pri riešení problémov s vašimi webovými aplikáciami založenými na LAMP. V knižnici Varien nainštalovanej s Magento je však málo známa funkcia, ktorá automaticky zaznamenáva databázové dotazy do súboru. Táto funkcia nielenže poskytuje veľký prehľad o zákulisných funkciách Magento, ale tiež vám pomáha ladiť pomaly prebiehajúce dotazy a iné problémy s výkonom založené na modeli.
Ak chcete povoliť túto funkciu, otvorte súbor lib/Varien/Db/Adapter/Pdo/Mysql.php vo svojom obľúbenom textovom editore. Okolo riadku 86 uvidíte nasledujúce premenné triedy:
[code language=”php”] /**
* Napíšte SQL ladiace dáta do súboru
*
* @var bool
*/
protected $_debug = false;
/**
* Minimálny čas trvania dopytu, ktorý sa má prihlásiť
*
* @var neznámy_typ
*/
chránený $_logQueryTime = 0,05;
/**
* Zaznamenajte všetky dopyty (ignorujte minimálne trvanie dopytu)
*
* @var bool
*/
protected $_logAllQueries = false;
/**
* Pridať do denníka údajov zásobníka hovorov (spätné sledovanie)
*
* @var bool
*/
protected $_logCallStack = false;
/**
* Cesta k protokolu údajov o ladení SQL
*
* reťazec @var
*/
protected $_debugFile = ‘var/debug/sql.txt’;[/code]
Dokumentácia dobre vysvetľuje, čo tieto premenné robia, ale aj tak ich prejdem.
[code language=”php”]protected $_debug = false;[/code]
– Toto je prepínač, ktorý zapína alebo vypína ladenie SQL. Ak ju chcete povoliť, nastavte ju na hodnotu „true“.
[code language=”php”]chránený $_logQueryTime = 0,05;[/code]
– Toto nastavuje minimálny čas v sekundách, ktorý určí, ktoré dotazy sa zaznamenajú. Je to užitočné pri hľadaní pomalých dopytov, ktoré by mohli mať vplyv na výkon vášho obchodu. 0,05 sekundy je trochu málo. Odporúčam nastaviť na 1,0 sekundy, ak chcete nájsť naozaj pomalé dopyty.
[code language=”php”]protected $_logAllQueries = false;[/code]
– Táto premenná hovorí Magentu, aby ignorovala predchádzajúcu možnosť a všetko len zaprotokolovala. Magento robí veľa databázovej práce, takže zapnutím tejto možnosti sa vygeneruje veľké množstvo údajov. Ak chcete získať všeobecný prehľad o operáciách databázy, ktoré prebiehajú pri načítavaní konkrétnej stránky, môžete túto možnosť povoliť nastavením na hodnotu „true“.
[code language=”php”]protected $_logCallStack = false;[/code]
– Táto možnosť je užitočná pri ladení vlastných modulov a modulov tretích strán, pretože okrem dotazov zaznamenáva spätnú stopu metód, ktoré zavolali dotaz. Opäť platí, že ak ste zapli možnosť zaznamenávať všetky dopyty, táto možnosť vytvorí ešte viac údajov na preosievanie.
[code language=”php”]protected $_debugFile = ‘var/debug/sql.txt’;[/code]
– Nakoniec máte možnosť nastaviť umiestnenie ladiaceho súboru, ktoré je štandardne nastavené na (váš Magento root)/var/debug/sql.txt.
Ak sa rozhodnete povoliť túto funkciu na ladenie vášho obchodu Magento, uistite sa, že obmedzíte prístup na svoju webovú lokalitu úpravou príslušnej časti súboru .htaccess. V opačnom prípade dostanete kombináciu dopytov od používateľov prehliadajúcich vaše stránky.
[code]############################################
## V predvolenom nastavení povoliť všetok prístup
#Objednávka povoliť, zamietnuť
#Povoliť od všetkých
Objednávka zamietnuť, povoliť
Odmietnuť od všetkých
Povoliť z VAŠEJ.IP.ADRESY[/code]
Nezabudnite tiež vypnúť ladenie po dokončení odstraňovania problémov, inak sa veľkosť tohto súboru denníka stane sama osebe problémom. Dúfajme, že vám to pomôže zistiť ten nepolapiteľný kúsok latencie databázy, ktorý spomaľuje váš web. Šťastný lov!