Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Bardzo długie wykonywanie skryptu
mati251195
post
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 25.07.2012

Ostrzeżenie: (0%)
-----


Witam,
Napisałem niezbyt skomplikowane narzędzie do sprawdzania, kto skomentował news. Sprawdzanie dotyczy około 100 newsów dla 20 użytkowników, a skrypt wykonuje się od 40 do 60 sekund i wg mnie coś jest nie tak. Albo hosting pracuje bardzo bardzo wolno, albo ja popełniłem jakiś błąd.

Na początku skrypt pobiera listę użytkowników i zapisuje do tablicy ich nicki, następnie pętla while po kolei odczytuje kolejne newsy. W pętli while jest pętla for, która sprawdza po kolei każego użytkownika - pobiera komentarz danego użytkownika do danego newsa, gdy nie znajdzie to wiadomo, że nie skomentował, a gdy znajdzie to sprawdza datę, aby było wiadomo po jakim czasie skomentował newsa. W pętli while od newsów od razu jest warunek, że gdy news jest w tablicy ignorowani lub gdy jego premiera jeszcze nie zastąpiła to nie sprawdza tego, tylko wstawia wszystkie, że nie skomentowali (IMG:style_emoticons/default/smile.gif) Tutaj znajduje się kod skryptu: http://wklejto.pl/173709

Z góry dziękuję za pomoc mi w tej sprawie, ponieważ chciałbym, aby to działało sprawnie (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
r4xz
post
Post #2





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

Ostrzeżenie: (0%)
-----


zadanie 1. Policz ile zapytań wysyłasz do bazy dla w/w 100 newsów i 20 użytkowników (IMG:style_emoticons/default/smile.gif)

---edit---
przyjmij że
  1. in_array($data['news_id'], $ignorowane) || $data['news_datestamp'] >= $teraz
zawsze zwraca false (IMG:style_emoticons/default/smile.gif)

Ten post edytował r4xz 12.09.2013, 19:17:40
Go to the top of the page
+Quote Post
mati251195
post
Post #3





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 25.07.2012

Ostrzeżenie: (0%)
-----


Tych zapytań jest około 2300. Mam inny skrypt, który wykonuje ponad 1800 zapytań i on działa bardzo sprawnie, czas wykonywania kodu to kilka sekund maksymalnie, a tu killkanaście razy dłużej to trwa (IMG:style_emoticons/default/sad.gif)

Ta linijka kodu nie zwraca zawsze FALSE, niby dlaczego tak uważasz?
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Napisz jakie jest zadanie tego kodu, co chcesz przy jego pomocy osiągnąć. Na pierwszy rzut oka źle zabrałeś się do problemu i nie ma sensu poprawiać tego kodu. Go trzeba napisać inaczej.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Po pierwsze czy zapytania optymalnie korzystają z kluczy w bazie?

Jeżeli nie to czy nie lepiej pokusić się o pobranie wszystkich komentów (tylko wymaganych pól a nie *) i iterować. Na pewno nie zajedzie to bazy a pamięci wystarczy
Go to the top of the page
+Quote Post
foxbond
post
Post #6





Grupa: Zarejestrowani
Postów: 162
Pomógł: 12
Dołączył: 20.12.2009
Skąd: Siedlce

Ostrzeżenie: (0%)
-----


Cytat
narzędzie do sprawdzania, kto skomentował news


To na 100% da się zrobić jednym zapytaniem. Chyba, że coś nie tak zaprojektowałeś db
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 17:19