2009-05-06 15 views
18

Mam zamiar użyć MYSQL. Czy jest dostępne rozszerzenie łączenia połączeń? Lub jaka jest normalna praktyka połączenia? Jest to jedna używane w każdym gdzie ...Połączenie php mysql

mysqli_connect("localhost", "xxx", "xxx", "test"); 

Czy ludzie używają tylko normalne mysql_connect lub pconnect ..? Jakiż jest lepszy pconnect i jakie ustawienie powinienem zrobić dla PConnect?

Odpowiedz

21

czy kiedykolwiek używałeś mysql_pconnect()? mysql_pconnect() działa bardzo podobnie do mysql_connect() z dwiema głównymi różnicami.

Po pierwsze, podczas łączenia funkcja najpierw spróbuje znaleźć (trwałe) łącze, które jest już otwarte dla tego samego hosta, nazwy użytkownika i hasła. Jeśli zostanie znaleziony, jego identyfikator zostanie zwrócony zamiast otwierania nowego połączenia.

Po drugie, połączenie z serwerem SQL nie zostanie zamknięte po zakończeniu wykonywania skryptu. Zamiast tego link pozostanie otwarty do przyszłego użytku (mysql_close() nie zamknie łączy ustalonych przez mysql_pconnect()).

Ten typ łącza dlatego jest nazywane 'uporczywy'

sprawdź to here

1

Istnieją 3 funkcje połączeń: Procedury normalne połączenie, nie pooling, nie może wykonywać zapisanych:

mysql_connect (just sql)

mysql_pconnect: połączenie pakietowe, nie można wykonać s tored procedury (tylko SQL)

mysqli_connect: normalne połączenie, nie łączenie można wykonać procedury składowane (wymaga MySQL 5 lub wyższej)

mysqli_pconnect: nie istnieje. Nie ma wbudowaną funkcję połączeń zarówno obsługi procedur składowanych i łączenie

Moja rada (poprzez doświadczenia i surfing):

Jeśli potrzebujesz procedur przechowywanych należy pominąć łączenie i używać mysqli_connect

Jeśli nie potrzebujesz procedur przechowywanych, wykorzystanie mysql_pconnect

2

To jest stare pytanie, ale chciałem dodać moje dwa grosze, ponieważ patrzyłem na ten sam problem. Począwszy od PHP 5.3, mysqli obsługuje stałe połączenia, wystarczy dodać p: na początku nazwy hosta.

Jeśli używasz Apache, czy próbowałeś sprawdzić połączenie z mysql poprzez moduł mod_dbd Apache? Obsługuje łączenie puli dla MySQL.http://httpd.apache.org/docs/2.2/mod/mod_dbd.html

+0

Dzięki za odnotowując „p”: prefiks hosta dla stałych połączeń wymaga ** Wersja PHP 5.3 **. Nie znalazłem tego małego samorodka nigdzie indziej. –

9

Trwałe wsparcie połączenie było wprowadzony w PHP 5.3 dla mysqli przedłużenia. Wsparcie było już obecne pod numerem w PDO MYSQL i ext/mysql. Idea trwałego połączenia polega na tym, że połączenie między procesem klienta a bazą danych może być ponownie użyte przez proces klienta klienta, a nie jest utworzone i zniszczone wiele razy. Zmniejsza to obciążenie związane z tworzeniem nowych połączeń za każdym razem, gdy wymagane jest , ponieważ nieużywane połączenia są buforowane i gotowe do ponownego użycia.

W przeciwieństwie do rozszerzenia mysql, mysqli nie zapewnia oddzielnej funkcji do otwierania trwałych połączeń. Aby otworzyć trwałe połączenie, musisz wstawić p: do nazwy hosta, gdy łączy się .

źródło: http://www.php.net/manual/en/mysqli.persistconns.php

sample code: 
$GLOBALS["mysqli"] = new mysqli('p:localhost', 'username', 'password', 'db_name'); 

edit: Przepraszam za dupe, nie widzi innych odpowiedzi.