Indeo
24.09.2006, 13:05:20
Pewnie głupie pytanie, ale musze je zadać

Czy połączenie z bazą danych uzyskane przez mysql_connect czy mysql_pconnect może być zapisane w sesji i utrzymane po przeładowaniu strony tak, aby skrypt nie musiał sie za każydm razem logować do serwera mysql?
Cysiaczek
24.09.2006, 14:13:29
Nie - nie można przechowywać uchwytów połaczeń w sesji, w cookie, ani w żaden inny sposób. Niestety.
Indeo
24.09.2006, 14:29:58
Czyli nastepująca funkcjonalność jest niemozliwa do zrealizowania? :
W komercyjnych aplikacjach bazodanowych istnieje funkcjonalność polegająca na tym, że aplikacja uruchomiona w trybie testowym działa na otwartej w bazie danych transakcji. Uzytkownik testuje na bazie rózne rzeczy. Po wyjściu użytkownika (zerwaniu połączenia z bazą) transakcja nie zostaje potwierdzona a dane wracają do stanu początkowego.
Ja chciałem zrobić coś podobnego - użytkownik robi pewne rzeczy, ocenia wynik a następnie albo go zatwierdza albo nie, a baza wraca do stanu sprzed zmian.
Problem w tym, że po przeładowaniu strony nawiązywane jest nowe połączenie, a stare jest zamykane (z automatycznym skutkiem ROLLBACK) i użytkownik ciagle widzi to samo (baze bez zmian), bo każde przeładowanie strony wszystko resetuje.
Więc nie da sie tego zrealizować?
nospor
24.09.2006, 14:31:31
http://pl.php.net/manual/pl/function.mysql-pconnect.phpCytat
mysql_pconnect() zachowuje się prawie jak mysql_connect() z dwoma zasadniczymi różnicami.
Pierwsza, podczas łączenia funkcja najpierw spróbuje znaleźć połączenie (stałe) już otwarte dla tego samego hosta, użytkownika i hasła. Jeżeli je znajdzie, jego identyfikator zostanie zwrócony zamiast otwierania nowego połączenia.
Druga, połączenie z serwerem SQL nie zostanie zamknięte po zakończeniu wykonywania skryptu. Zamiast tego połączenie pozostanie otwarte do późniejszego użycia (mysql_close() nie zamyka połączeń nawiązanych za pomocą mysql_pconnect()).
Indeo
24.09.2006, 14:51:17
Dobra dobra, tyle to i ja widziałem, ale ja pytam praktycznie - bo dlaczego w takim razie korzystając z mysql_pconnect() ustawiam sobie w bazie zmienną np
SET @zmienna=1;
a po przeładowaniu strony po tej zmiennej w bazie nie ma już sladu?
nospor
24.09.2006, 14:58:55
Na szybko sklecilem taki skrypcik:
<?php
?>
I mi dziala

zawsze zmienna jest wyswietlana.
Oczywiscie po pierwszym zapuszczeniu skryptu, nalezy usunac linie, ktora ustawia zmienna ponownie
Indeo
24.09.2006, 16:00:48
No a u mnie nie działa
Może to kwestia ustawień?
dr_bonzo
24.09.2006, 16:44:07
Ktorego Mysqla masz, podaj dokladna wersje
Indeo
24.09.2006, 21:37:18
Uzywam mysql-5.0.21-win32 ...
Już wszystko jasne. mysql_pconnect działa tak jak to napisał nospor ale tylko kiedy php jest uruchomiony w trybie modułu anie w trybie CGI tak jak miałem wcześniej. Sprawdziłem i teraz działa

Dzieki