Zdecydowana większość serwerów współdzielonych oferowanych przez firmy hostingowe w celu zapewnienia wszystkim użytkownikom jednakowych parametrów wydajnościowych serwera stosuje ograniczenia przydzielonych dla każdego użytkownika zasobów, głównie dostępnej mocy obliczeniowej procesora, ilości dostępnej pamięci operacyjnej, maksymalnego dozwolonego czasu wykonywania pojedynczego skryptu PHP oraz liczby generowanych zapytań do bazy danych w ciągu 1 godziny. Polityka taka gwarantuje wszystkim użytkownikom których aplikacje zainstalowane są na serwerze zapewnienie jednakowego dostępu do wszystkich usług bez obawy że któryś z działających programów dowolnego użytkownika spowoduje przeciążenie serwera i tym samym zablokowanie dostępu do określonej usługi dla pozostałych użytkowników serwera.

 

Powyższe ograniczenia, choć ze wszech miar przydatne, w przypadku często odwiedzanego przez klientów sklepu posiadającego w swojej ofercie kilka lub kilkanaście tysięcy produktów mogą okazać się bardzo uciążliwe i dokuczne, a w skrajnych przypadkach, szczególnie parametr ograniczający dozwoloną liczbę generowanych zapytań do bazy danych może wręcz uniemożliwić działanie sklepu.

Objawem generowania przez sklep zbyt dużej liczby zapytań do bazy danych jest, prócz oczywiście znacznego spowolnienia działania sklepu, pojawiający się w przeglądarce zamiast oczekiwanej strony komunikat o treści np. 1226 User 'db_zencart' has exceeded the 'max_questions' resource (current value 5000) ?, co oznacza że dozwolona przez konfigurację serwera ilość wygenerowanych zapytań do bazy danych została przekroczona i w konsekwencji działanie całego sklepu zostaje wstrzymane, na szczęście tylko do czasu zakończenia cyklu godzinnego. Po upływie 60 minut od wygenerowania przez sklep pierwszego zapytania w tym cyklu ilości zapytań są zliczane od nowa, co powoduje że sklep znowu działa poprawnie.

 

Aby uniknąć wyżej opisanej sytuacji należy przede wszystkim sprawdzić dokładnie konfigurację sklepu i powyłączać wszystkie zbędne funkcje z których nie korzystamy, a które niepotrzebnie obciążają działanie całego sklepu, często generując tym samym ogromną liczbę nieprzydatnych do niczego zapytań do bazy danych. Bardzo pomocny w tej czynności będzie artykuł na temat optymalizacji i przyspieszenia działania sklepu w którym opisane zostały najważniejsze aspekty tego zagadnienia. Jeśli jednak po wykonaniu wszystkich zaleceń zawartych w treści wspomnianego artykułu problem nadal nie ustępuje, nie pozostaje nic innego jak wprowadzenie bardziej drastycznego rozwiązania polegającego na wyłączeniu statystyki przeglądanych stron, dzięki czemu, szczególnie przy dużym ruchu klientów w sklepie można ograniczyć liczbę generowanych zapytań do bazy o ponad 40%.

 

Otwieramy w edytorze plik: /includes/modules/pages/products_info/main_template_vars.php - następnie odnajdujemy fragment widoczny poniżej:

$sql = "update " . TABLE_PRODUCTS_DESCRIPTION . "
            set        products_viewed = products_viewed+1
            where      products_id = '" . (int)$_GET['products_id'] . "'
            and        language_id = '" . (int)$_SESSION['languages_id'] . "'";

    $res = $db->Execute($sql);

i zastępujemy go wpisem o poniższej treści:

 /*   $sql = "update " . TABLE_PRODUCTS_DESCRIPTION . "
            set        products_viewed = products_viewed+1
            where      products_id = '" . (int)$_GET['products_id'] . "'
            and        language_id = '" . (int)$_SESSION['languages_id'] . "'";

    $res = $db->Execute($sql);   */

Od tej pory wprawdzie nie będą już zliczane statystyki wyświetlania stron poszczególnych produktów w sklepie, ale za to sklep znacznie zyska na szybkości działania i co najważniejsze będzie generował znacznie mniej zapytań do bazy danych, co w konsekwencji pozwoli na dalsze jego używanie na obecnym serwerze przynajmniej do czasu znalezienia serwera oferującego wyższe limity ograniczeń.


Zen Cart Template - Nowoczesne szablony sklepu

 

Sklepy internetowe Zen Cart - instalacja - modyfikacja - pozycjonowanie