Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> PDO i zamykanie połączenia ?
Mayka
post
Post #1





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 12.01.2009
Skąd: Kanapa

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


Witam, chciałem zapytać czy jest jakieś polecenie/wywołanie do zamknięcia połączenia przy PDO i mysql ?
  1. function dbInit(){
  2. $dbs=new PDO('mysql:host='.$DBVARS['hostname'].';port='.$DBVARS['port'].';dbname='.$DBVARS['db_name'],$DBVARS['username'],$DBVARS['password']);
  3. $dbs->query('SET NAMES utf8');
  4. $dbs->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  5. $dbs->num_queries=0;
  6. $GLOBALS['db']=$dbs;
  7. return $dbs;
  8. }
  9. function dbQuery($query){
  10. $dbs=dbInit();
  11. $q=$dbs->query($query);
  12. $dbs->num_queries++;
  13. return $q;
  14. }
  15. function dbRows($query) {
  16. $q = dbQuery($query);
  17. //print_r($dbs->errorInfo());
  18. return $q->fetchAll(PDO::FETCH_ASSOC);
  19. }


Znalazłem takie coś w skryptach/książkach, i bardzo ciekawie się to sprawdza tylko że niestety niewiem czemu generuje to 25tyś połączeń przy 20użytkownikach.. Czy ktoś jest mi wstanie pomóc/ przerobić to tak żeby nie było połączenia/inicjacji bazy przy każdym dbQuery() ? Ew czy to można jakoś zamknąć ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Methestel
post
Post #2





Grupa: Zarejestrowani
Postów: 46
Pomógł: 10
Dołączył: 30.06.2008

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


Zwykłe PDO jak najbardziej potrafi zrobić jedno połączenie. Tylko chodzi o to żeby nie robił tych połączeń przy każdym zapytaniu tylko maksymalnie raz podczas jednego requesta. Nie wiem jak to prościej wyjaśnić ... może wyobraź sobie że masz do wykonania 100 zapytań do bazy danych.
Masz do wyboru:
- przed każdym zapytaniem tworzysz nowe połączenie z bazą danych i wykonujesz zapytanie (łącznie wykonujesz 100 połączeń z bazą danych i 100 zapytań)
- tworzysz jedno połączenie z bazą danych i używając tylko tego jednego połączenia wykonujesz kolejno 100 zapytań (łącznie 1 połączenie z bazą danych i 100 zapytań)

Efekt końcowy będzie taki sam. Jak myślisz, które rozwiązanie jest lepsze?


Tak, jak wstawisz $dbs = null na koniec dbquery to połączenia będą zamykane - zresztą masz to jak wół napisane w dokumentacji http://www.php.net/manual/en/pdo.connections.php
Jeśli nie przeszkadza Ci że przy każdym zapytaniu będziesz od nowa łączył się z bazą danych to nie ma problemu.

Ten post edytował Methestel 10.12.2013, 20:26:32
Go to the top of the page
+Quote Post

Posty w temacie
- Mayka   PDO i zamykanie połączenia ?   9.12.2013, 22:43:11
- - Turson   http://www.php.net/manual/en/pdostatement.closecur...   9.12.2013, 22:45:30
- - Mayka   tzn mam dołożyć $dbs->closeCursor(); ?   9.12.2013, 23:41:08
- - Methestel   Radzę w ogóle zmienić podejście i ten antypattern ...   10.12.2013, 00:30:21
- - Mayka   A mogłbyś jeszcze powiedzieć jak teraz przez to po...   10.12.2013, 10:09:06
- - !*!   Zamiast tworzyć jakieś bzdurne klasy korzystaj z P...   10.12.2013, 10:46:15
- - Methestel   Trzymając się kodu z pierwszego posta i wykorztują...   10.12.2013, 14:47:41
- - Mayka   Cytat(!*! @ 10.12.2013, 10:46...   10.12.2013, 19:28:32
- - Damonsson   Po co Ci to manualne zamykanie połączenia? Jak ju...   10.12.2013, 20:08:00
- - Methestel   Zwykłe PDO jak najbardziej potrafi zrobić jedno po...   10.12.2013, 20:24:07
- - ctom   tak jak napisał @Methestel problemem w Twoim skryp...   10.12.2013, 22:07:55
- - Turson   Jeśli przy każdym zapytaniu nawiązujesz połączenie...   10.12.2013, 22:44:25
|- - Mayka   Cytat(Turson @ 10.12.2013, 22:44:25 )...   11.12.2013, 17:12:25
|- - Turson   Cytat(Turson @ 10.12.2013, 22:44:25 )...   11.12.2013, 17:54:45
- - ctom   Cytat(Mayka @ 11.12.2013, 17:12:25 ) ...   11.12.2013, 17:30:54
|- - Mayka   Cytat(ctom @ 11.12.2013, 17:30:54 ) p...   11.12.2013, 17:55:50
- - Methestel   Sama się pytasz w pierwszym poście jak zrobić ...   11.12.2013, 17:31:54
|- - Mayka   Cytat(Methestel @ 11.12.2013, 17:31:5...   11.12.2013, 17:51:52
- - Turson   Żadne OOP. [PHP] pobierz, plaintext $db = new PDO...   11.12.2013, 18:11:47
- - ctom   powiedz szczerze, nie masz pojęcia co ta klasa Pdo...   11.12.2013, 18:11:50
|- - Mayka   Cytat(ctom @ 11.12.2013, 18:11:50 ) p...   11.12.2013, 18:48:24
- - ctom   założę się, że i tak masz wszystko w tym pliku ind...   11.12.2013, 19:14:07
|- - Mayka   Cytat(ctom @ 11.12.2013, 19:14:07 ) z...   11.12.2013, 22:26:15
- - ctom   bez uraz za to porównanie ale ...   11.12.2013, 22:44:54
|- - Mayka   Cytat(ctom @ 11.12.2013, 22:44:54 ) b...   12.12.2013, 03:53:15
- - ctom   Cytat(Mayka @ 12.12.2013, 03:53:15 ) ...   12.12.2013, 13:24:52
- - Mayka   Chodzi mi o to czy jest jakaś róznica czy zainicju...   14.12.2013, 14:05:56
- - Turson   Co masz na myśli mówiąc, że zainicjujesz bazę prze...   14.12.2013, 15:16:32


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: 14.10.2025 - 02:18