Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]PDO MySQL Powolne działanie skryptu
ozzy1988
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 3.04.2015

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


Witam!

Zabrałem sie ostatnio za modernizację mojego programu i postanowiłem przejść z mysql_connect na klasę PDO.

Aby nie komplikować sobie życia skorzystałem dla testów z tej klasy indieteq/PHP-MySQL-PDO-Database-Class.

Po odpaleniu wszystkiego okazało się,że wszystko działa okropnie mozolnie, klasa łączy się i wykonuje zapytania ale ich czas to jakaś masakra.

Dla porównania gdy logowanie było zrealizowane na mysql_connect() strona ładowała się błyskawicznie a przy PDO trwa to ok 30 do 60 sekund - czasami nawet powyżej minuty.

To moje pierwsze doświadczenia z PDO i nie wiem czy może ja coś źle robię czy ta klasa ma jakis błąd...

Dodam, że łącze się z bazą za pomocą adresu IP serwera

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Turson
post
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Pewnie działa wolno, bo każdy nowy obiekt $db = new DB(); to nowe połączenie do bazy...
https://github.com/indieteq/PHP-MySQL-PDO-D...er/Db.class.php
Tutaj lepszy byłby Singleton

Ten post edytował Turson 3.04.2015, 19:51:29
Go to the top of the page
+Quote Post
ozzy1988
post
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 3.04.2015

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


Można to jakoś naprawić? Czy zastosować inną klasę?

Rozumiem, że "Singleton" to nazwa klasy?

Pozdrawaim
Go to the top of the page
+Quote Post
Turson
post
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Nie, to wzorzec projektowy. W każdym bądź razie chodzi o to, że jak tworzysz nowy obiekt DB
  1. $db = new DB();

w wielu różnych miejscach, to żeby za każdym razem nie tworzyło nowego połączenia (jak to robi teraz i spowalnia proces), a operowało cały czas na jednym.
Go to the top of the page
+Quote Post
ozzy1988
post
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 3.04.2015

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


Okkk, udało się (IMG:style_emoticons/default/biggrin.gif)
  1. $db = Db::getInstance();

Dziękuje Ci bardzo!

niestety, przedwczesna radość każde pobranie danych z mysql krytycznie spowalnia działanie skryptu (IMG:style_emoticons/default/sad.gif)

W klasie Db.Class.php dodałem kod

  1. private static $instance;
  2. private function __clone() {}
  3.  
  4. public static function getInstance() {
  5. if(self::$instance === null) {
  6. self::$instance = new DB();
  7. }
  8. return self::$instance;
  9. }


Ten post edytował ozzy1988 4.04.2015, 00:03:57
Go to the top of the page
+Quote Post
com
post
Post #6





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


@Turson singleton w 2015 roku ? Depedency injection teraz sie stosuje (IMG:style_emoticons/default/smile.gif)
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: 2.10.2025 - 17:00