![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 92 Pomógł: 2 Dołączył: 22.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam prosił bym o pomoc przy optymalizacji kodu ponieważ hosting skarży się na za duże użycie procesosora skrypt jest wykonywany raz na 5 min array zwracany to okolo 400 wierszy wykonywany 100 razy ,obciecie danych wchodzacych do preg mach odpada bo bardziej obciaza serwer
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 580 Pomógł: 85 Dołączył: 25.03.2010 Skąd: Skrzyszów :) Ostrzeżenie: (0%) ![]() ![]() |
Zamiast pobierać dane w pętli zrób
A inserty możesz wykonywać też w takiej formie, łącząc w php kolejne rekordy i wykonując inserta na samym końcu skryptu, wtedy zamiast 100 zapytan do jednej tabeli pójdzie jedno wielkie, co jest wydajniejsze
Poza tym wszystkie zapytania obejmij transakcją, wtedy nie musisz się też obawiać o naruszenie struktury danych, znacząco wzrośnie też wydajność
Jako typ tabel ustaw innoDb, jest ono przystosowane do częstego wstawiania rekordów, myisam jest natomiast nastawione na szybkie wybieranie danych i wstawianie nowych rekordów jest tam wolniejsze Ten post edytował zend 27.07.2011, 19:08:22 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 395 Pomógł: 80 Dołączył: 24.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Z listingu wynika że wykonujesz to samo 100 razy czy rzeczywiście jest to ten sam fragment kodu nie różniący się żadnymi danymi wejściowymi czy może jednak dane wejściowe się zmieniają i dlaczego pętla ta jest wykonywanana 100 razy ?
W głównym while-u jest jeszcze jeden który wykonuje się X razy, trudno powiedzieć dokładnie ile nie znając danych wejściowych, ale 100 razy X obiegów razy kilka zapytań w jednym obiegu to daje ogromną ilość zapytań. -------------------- |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 92 Pomógł: 2 Dołączył: 22.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
100 razy dostaje nowe dane ktore sa pobierane z serwera w postaci chotycznego ciagu znakow mam takie pytanie czy da sie zrobic np 10 updatow bazy w jednym zapytaniu ? bo juz inserty zrobilem ze sa wszystkie na raz
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 580 Pomógł: 85 Dołączył: 25.03.2010 Skąd: Skrzyszów :) Ostrzeżenie: (0%) ![]() ![]() |
Nie jestem do końca pewny czy to zadziała, ale spróbuj połączyć wszystkie zapytania update średnikiem, i też wykonać na końcu, ale nie jestem pewny czy nie ma limitu, że jednym zapytaniem można zrobić jeden update, jeśli nie, a w grę wchodziła by zmiana rozszerzenia na mysli to jest mysqli::multi_query. Jeśli żadna z metod Ci nie pasuje to musisz wykonywać zapytania pojedynczo, ale itak transakcja zrobi swoje i znacząco poprawi wydajność
Ten post edytował zend 27.07.2011, 19:30:54 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 92 Pomógł: 2 Dołączył: 22.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
zrobiłem wszystko poczekam chwile i zobaczę czasy
![]() Witam ponownie mam jeszcze jakies pytanie czy moge zrobic zapytanie
czy jezeli bede mial tak przechowywane zebrane dane i dam w zaputaniu tablice to bedzie działać ? Ten post edytował xavierek 28.07.2011, 14:09:12 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 580 Pomógł: 85 Dołączył: 25.03.2010 Skąd: Skrzyszów :) Ostrzeżenie: (0%) ![]() ![]() |
Jeśli podasz tablice to nie zadziała, potrzebny jest string, spróbuj tak
Ten post edytował zend 28.07.2011, 14:14:35 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 92 Pomógł: 2 Dołączył: 22.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
zrobiłem to za pomoca implode();
![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 10:58 |