Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zamykanie połączeń MySql
Lewiatan
post 4.05.2011, 14:33:06
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 6
Dołączył: 1.02.2010
Skąd: Łódź

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


Witam,

Mam pytanko natury technicznej.

Załóżmy, że mam skrypt, dajmy na to user_list.php, który w pętli dodaje do tablicy kolejne obiekty, powiedzmy klasy User. Niech by to w uproszczeniu wyglądało tak:

  1. <?php
  2.  
  3. $user_list = array();
  4.  
  5. for ($i = 0; $i < $user_counter; $i++)
  6. {
  7. $user_list[] = new User($i);
  8. }
  9.  
  10. ?>


Załóżmy, że $user_counter jest obliczone wcześniej.

Pytanie brzmi tak: jeśli klasa User otwiera w konstruktorze połączenie z bazą celem pobrania informacji o użytkowniku, ale go NIE zamyka, to zgodnie z zasadą, że koniec skryptu i wszystkie połączenia są zamykane, to połączenia zostaną zamknięte po zakończeniu skryptu user_list.php?

Czy dobrze rozumuję, że jeśli klasa User nie zamyka połączenia to jeśli pętla będzie miała 30 obiegów to przed zakończeniem skryptu będę miał otwartych 30 równoległych połączeń?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
mat-bi
post 4.05.2011, 14:41:33
Post #2





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


Pamiętaj, że w jednym skrypcie jest tylko jedna klasa, chyba, że użyjesz clone
Go to the top of the page
+Quote Post
Lewiatan
post 4.05.2011, 14:48:03
Post #3





Grupa: Zarejestrowani
Postów: 28
Pomógł: 6
Dołączył: 1.02.2010
Skąd: Łódź

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


Cytat(mat-bi @ 4.05.2011, 15:41:33 ) *
Pamiętaj, że w jednym skrypcie jest tylko jedna klasa, chyba, że użyjesz clone

No ok, ale mam $user_counter obiektów. Chodzi o to, czy jeśli konstruktor skończy pobierać dane i połączenie nie zostanie zamknięte to w takim razie zostanie ono zamknięte dopiero po wykonaniu całego skryptu?
Go to the top of the page
+Quote Post
mat-bi
post 4.05.2011, 14:49:13
Post #4





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


Samo się nie zamyka, lepiej dać zamykanie w destruktorze
Go to the top of the page
+Quote Post
Crozin
post 4.05.2011, 15:00:21
Post #5





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

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


@mat-bi: Co mają niby klasy do clone?

Co do tematu - zależy od tego czym i jak łączysz się z bazą danych. Generalnie jeżeli za każdym razem używasz tych samych parametrów połączenia za każdym razem zostanie użyte pierwsze połączenie. Nie zmienia to jednak faktu, że:
1. Co to za durny pomysł, żeby nawiązywać połączenie w takim miejscu.
2. Co to za durny pomysł, żeby obiekt reprezentujący użytkownika (wnioskuję po nazwie) pobierał jakieś dane z bazy?
Go to the top of the page
+Quote Post
mat-bi
post 4.05.2011, 15:04:59
Post #6





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


Wydaje mi sie, że zawsze jest jedna instancja klasy, dopiero poprzez clone tworzymy wiele.

np.

  1. <?php
  2.  
  3. class osoba{
  4. public $imie;
  5. public $nazwisko;
  6. public $ksywa;
  7.  
  8. }
  9.  
  10. $ja = new osoba;
  11. $ja -> imie = 'Tomasz';
  12. $ja -> nazwisko = 'Jędrzejewski';
  13. $ja -> ksywa = 'Zyx';
  14.  
  15. echo 'JA: '.$ja -> imie.' '.$ja -> nazwisko.' aka. '.$ja -> ksywa.'<br/>';
  16.  
  17. $on = $ja; // 1
  18. echo 'Tworzymy $on...<br/>';
  19.  
  20. $on -> imie = 'Bartosz';
  21. $on -> nazwisko = 'Maciaszek';
  22. $on -> ksywa = 'Sickboy';
  23.  
  24. echo 'ON: '.$on -> imie.' '.$on -> nazwisko.' aka. '.$on -> ksywa.'<br/>';
  25. echo 'JA: '.$ja -> imie.' '.$ja -> nazwisko.' aka. '.$ja -> ksywa.'<br/>';
  26. ?>


(przykład z http://museum.webcity.pl/webcity/artykuly.php/t/59)

@EDIT:
Cytat
Object Cloning


Ten post edytował mat-bi 4.05.2011, 15:05:55
Go to the top of the page
+Quote Post
Crozin
post 4.05.2011, 15:09:17
Post #7





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

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


A zauważyłeś, że Ty nie utworzyłeś nowego obiektu (new ...) tylko utworzyłeś referencję ($on) do już istniejącego ($ja)? Poczytaj o podstawach programowania czyli o zmiennych i referencjach.
Go to the top of the page
+Quote Post
Lewiatan
post 4.05.2011, 15:15:17
Post #8





Grupa: Zarejestrowani
Postów: 28
Pomógł: 6
Dołączył: 1.02.2010
Skąd: Łódź

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


Cytat(Crozin @ 4.05.2011, 16:00:21 ) *
1. Co to za durny pomysł, żeby nawiązywać połączenie w takim miejscu.
2. Co to za durny pomysł, żeby obiekt reprezentujący użytkownika (wnioskuję po nazwie) pobierał jakieś dane z bazy?

Dlaczego od razu durny? biggrin.gif
Go to the top of the page
+Quote Post
mat-bi
post 4.05.2011, 15:18:34
Post #9





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


Sorry, pomieszałem kod, nie dojrzałem.
Go to the top of the page
+Quote Post
Crozin
post 4.05.2011, 17:02:19
Post #10





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

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


Bo w obu przypadkach łamiesz jedną z podstawowych zasad OOP jaką jest pojedyncza odpowiedzialność obiektów. A złamanie jej - poza aspektem ideologicznym - niesie za sobą cały szereg problemów, które wynikną jak tylko skończysz projekt i będziesz chciał go rozwijać w przyszłości.
Go to the top of the page
+Quote Post
Lewiatan
post 5.05.2011, 12:08:54
Post #11





Grupa: Zarejestrowani
Postów: 28
Pomógł: 6
Dołączył: 1.02.2010
Skąd: Łódź

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


Cytat(Crozin @ 4.05.2011, 18:02:19 ) *
Bo w obu przypadkach łamiesz jedną z podstawowych zasad OOP jaką jest pojedyncza odpowiedzialność obiektów. A złamanie jej - poza aspektem ideologicznym - niesie za sobą cały szereg problemów, które wynikną jak tylko skończysz projekt i będziesz chciał go rozwijać w przyszłości.

Hmm... o tym przyznam szczerze nie miałem pojęcia... albo gdzieś mi umknęło między wierszami. Dzięki za informację, będę musiał nadrobić te braki wink.gif

Jeśli o mnie chodzi: EOT, także z powodzeniem można zamknąć
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 02:33