Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Przechowywanie połączenia z bazą jako zmiennej w sesji
Indeo
post 24.09.2006, 13:05:20
Post #1





Grupa: Zarejestrowani
Postów: 295
Pomógł: 7
Dołączył: 26.03.2004
Skąd: Opole

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


Pewnie głupie pytanie, ale musze je zadać smile.gif 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?


--------------------
Go to the top of the page
+Quote Post
Cysiaczek
post 24.09.2006, 14:13:29
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Nie - nie można przechowywać uchwytów połaczeń w sesji, w cookie, ani w żaden inny sposób. Niestety. sad.gif


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
Indeo
post 24.09.2006, 14:29:58
Post #3





Grupa: Zarejestrowani
Postów: 295
Pomógł: 7
Dołączył: 26.03.2004
Skąd: Opole

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


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ć?

Ten post edytował Indeo 24.09.2006, 14:30:44


--------------------
Go to the top of the page
+Quote Post
nospor
post 24.09.2006, 14:31:31
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




http://pl.php.net/manual/pl/function.mysql-pconnect.php
Cytat
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()).


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Indeo
post 24.09.2006, 14:51:17
Post #5





Grupa: Zarejestrowani
Postów: 295
Pomógł: 7
Dołączył: 26.03.2004
Skąd: Opole

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


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

  1. SET @zmienna=1;


a po przeładowaniu strony po tej zmiennej w bazie nie ma już sladu? smile.gif


--------------------
Go to the top of the page
+Quote Post
nospor
post 24.09.2006, 14:58:55
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Na szybko sklecilem taki skrypcik:
  1. <?php
  2. mysql_pconnect('localhost', 'root', '');
  3. $row = mysql_query('set @zmienna=1');
  4. $row = mysql_fetch_array(mysql_query('select @zmienna'));
  5. print_r($row);
  6. ?>

I mi dziala smile.gif zawsze zmienna jest wyswietlana.
Oczywiscie po pierwszym zapuszczeniu skryptu, nalezy usunac linie, ktora ustawia zmienna ponownie smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Indeo
post 24.09.2006, 16:00:48
Post #7





Grupa: Zarejestrowani
Postów: 295
Pomógł: 7
Dołączył: 26.03.2004
Skąd: Opole

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


No a u mnie nie działa smile.gif
Może to kwestia ustawień?


--------------------
Go to the top of the page
+Quote Post
dr_bonzo
post 24.09.2006, 16:44:07
Post #8





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Ktorego Mysqla masz, podaj dokladna wersje


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Indeo
post 24.09.2006, 21:37:18
Post #9





Grupa: Zarejestrowani
Postów: 295
Pomógł: 7
Dołączył: 26.03.2004
Skąd: Opole

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


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 smile.gif
Dzieki winksmiley.jpg


--------------------
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: 25.06.2025 - 00:04