Jump to content

rekurencja\pomoc


Dawid223

Recommended Posts

Witam

 

 

Administruje sklep z częsciami samochodowymi ale niestety strona zaczeła bardzo wolno działać,  aktualnie jest tylko biała strona. Kontaktowałem się z hostingodawcą który stwierdził , że należy przepisać drzewko marek samochodów używając rekurencji ale niestety nie bardzo wiem jak za to się mam zabrać i tu moje pytanie mogł by mi ktos w tym pomóc lub powiedzieć czy to jest wina serwera czy też faktycznie ja coś źle zrobiłem dodam że strona miała bardzo duży czas odpowiedzi z góry dziękuję za pomoc

 

Pozdrawiam

 

Dawid

Link to comment
Share on other sites

Więc tak w kategorii sklep sa następujące podkategorie

 

np

audii

A4

A5

A6

 

itd

 

w audii A4

 

są kategorie które odpowiadają za model silnika

 

tak to mniej więcej wygląda niestety nie mam jak tego zademonstrować ponieważ aktualnie jest biała strona zamiast sklepu

Link to comment
Share on other sites

Czyli wykorzystujesz tylko kategorie do tego celu.

Najbardziej zasobożerne są rozbudowane kombinacje atrybutów, gdzie ilości rekordów dochodzą do setek tysięcy i wtedy jest potrzebny naprawdę mocny serwer (najlepiej AS/400 ;) ).

 

Kwestia jest taka, ile masz tych kategorii i ile produktów, bo możesz ich mieć tysiące.

 

1. Włącz wszystkie optymalizacje CCC i pamięć podręczną smarty (Zaawansowane -> Wydajność)

2. Przebuduj wszystkie indeksy w Moduły -> Blok nakładania filtrów nawigacyjnych

3. Jak nie pomoże pozostaje zmienić hosting na wydajniejszy.

 

Edit:

4. Włącz raportowanie błędów:

https://www.prestashop.com/forums/topic/272660-500-error-b%C5%82%C4%99dy-bia%C5%82a-strona-instrukcja-dotycz%C4%85ca-trybu-debugowania/

Edited by Yabber (see edit history)
Link to comment
Share on other sites

Dziwne te rady dotyczące rekurencji. Akurat funkcje rekurencyjne w php działają znacznie mniej wydajnie niż iteracyjne (zakładam że autor tego pomysłu miał to na myśli). Prosty przykład funkcji rekurencyjnej:

 

function silnia($n)
{
    if ($n > 1)   
      return ($n * silnia($n-1));   // wywolanie samej siebie
   else 
      return 1;   // warunek koncowy
}

 

 

hmm, niby ładnie i elegancko .... ale niestety niezbyt wydajnie

 

To samo ale z iteracją:

 

function silnia_i($n)
{
   $w = 1;
   for ($i = 1; $i<=$n; $i++)
      $w = $w * $i;
   return $w;
}

 

 

 

Trochę mniej elegancko ale bardziej wydajnie. 

 

Przez ostatni miesiąc dużo analizowałem kod presty (z uwagi iż podjąłem decyzję że sklep będzie stał na tym silniku) i niestety w kodzie php (pliki klas, kontrolery itd) jest tego strasznie dużo. Ponadto autorzy skryptów rzadko korzystają z referencji, co też może przyśpieszyć operacje w funkcjach, funkcje są długie jak tasiemce - dla przykładu wczoraj analizowałem błąd związany z pokazywaniem się w koszyku bezpłatnej dostawy (zakupy w trybie gościa), choć w ustawieniach jest ok i nie powinna się wyświetlać darmowa dostawa. Jak zacząłem przeglądać klasę Cart to mało nie dostałem zawału. Jedna z funkcji ma chyba z 400 linii kodu gdzie w zasadzie można byłoby skrócić to do połowy. A propos - była to typowa funkcja referencyjna. Częstym błędem w kodzie jest zrzucanie całych obiektów do parametrów funkcji, zamiast prostego parametru. Nawet moim zdaniem context jest mocno niedpopracowany To wszystko niestety wpływa na wydajność kodu....

 

 

 

 

 

 

  • Like 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...