Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> transakcje w MySQL
mhs
post
Post #1





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

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


Witam,


Mam następujący problem. Piszę w chwili obecnej skrypt ankiety. Będę chciał, aby użytkownikowi nie wyświetlać wszystkich na raz pytań tylko podzielić je na kilka ekranów. Pola, które już użytkownik wypełni będę chciał zapisywać w bazie. Chciałbym tutaj wykorzystać transakcje. Co jednak się stanie gdy użytkownik nie zakończy ankiety i tak po prostu wyłączy przeglądarkę. Czy istnieje coś takiego aby ustawić czas, po którym system sam wyda polecenie rollback? Pytanie dotyczy MySQL’a.
Dzięki za odpowiedź.
Go to the top of the page
+Quote Post
msulik
post
Post #2





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 31.03.2002
Skąd: Toruń

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


Może to odpowiedź nie na temat, ale czy nie lepiej zastosować sesje?
Go to the top of the page
+Quote Post
Jabol
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

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


wydaje mi się, że wszystkie zapytaina które dostaną commit są traktowane jako rollback
Go to the top of the page
+Quote Post
delorian
post
Post #4





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 23.08.2003
Skąd: Olsztyn, Polska

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


Wszystkie zapytania, które nie dostaną commit są oczywiście traktowane jako rollback. Jednak wtedy gdy istnieje ciągłe połączenie z bazą danych, tak jak to może występować w przypadku serwisów internetowych, rollback nie jest domyślny, przynajmniej do czasu zamknięcia połączenia, co czasem może wystąpić po długim okresie. Próbowałem cosik znaleźć na ten temat w dokumentacji, ale nie za bardzo jest co. Więc teoretycznie fajnie by było taki rollback wykonać co jakiś czas, np. przed zakończeniem połączenia w wywołaniu mysql_close, ale nie piszą jak to by wszystko działało. W takim przypadku rozwiązanie wykorzystujące sesje php jest chyba lepsze.
Go to the top of the page
+Quote Post
mhs
post
Post #5





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

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


Hmm... chyba faktyczne lepsze beda sesje. Mam w zwiazku z tym nastepujace pytanie. W jaki sposob zaprojektowac baze danych. Czy uzasadnione jest stosowanie np. jakiejs tabeli tymczasowej, w ktorej bede przechowywal aktualny stan wypelniania ankiety a dopiero po zakonczeniu przy ostatnim ekranie przekopiuje dane z tej tabeli tymczasowej do mojej glownej tabeli. Wowczas w mojej 'ostatecznej' tabeli pozbede sie sytuacji w ktorej bede mial puste rekordy czyli czegos co nie powinno byc w bazie danych. Tabele tymczasowa bede mogl sobie co jakis czas wyczyscic aby nie zbierac smieci. Czy stosowanie tymczasowych tabel np. w podobnych lub tez innych projektach jest stosowane/dopuszczalne?

Dzieki za dotychczasowe odpowiedzi i te nastepne.
Go to the top of the page
+Quote Post
adwol
post
Post #6





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

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


Wyniki cząstkowe trzymaj w zmiennych sesyjnych. A je możesz trzymać np. w bazie w specjalnej tabeli o takim schemacie:
[sql:1:2fbd55b770]create table sesje (session_id char(32), dane text)[/sql:1:2fbd55b770]
Funkcja session_set_save_handler pozwala na ustawienie swoich funkcji obsługujących przechowywanie danych w sesji, więc nie powinieneś mieć z tym problemu.
Go to the top of the page
+Quote Post

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: 23.08.2025 - 01:31