Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Kilka procesow SQL jednoczesnie... problem - kolejka!!!
bgargas
post 20.11.2003, 20:01:25
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 20.11.2003
Skąd: Chicago

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


Witam.
Zabralem sie za dosc duzy projekt i jak dotychczas - bedac prawie na ukonczeniu - zazyla 8O mnie jedna sprawa.
Przedstawie w skrucie dzialanie skryptu.
Skrypt to tzw. 'Workbook'. Klient dzwoni - pracownik umawia go na robote i wpisuje do bazy poprzez formularz php w czasie rozmowy lub zaraz po niej.
I tu problem - chce zablokowac mozliwosc wpisania 2 rekordow w tym samym czasie - gdy jedna osoba jest w trakcie pisania (nie musi jeszcze wykonywac sie proces w sql - bo to przeciez sa najwyzej sekundy), ale jezeli juz wejdzie na strone z formularzem - inna osoba dostaje komunikat (chcac cos wdytowac) ,ze jest w kolejce...
Mam nadzieje, ze dobrze to wyjasnilem. Myslalem o tym, zeby zrobic to od strony MySqla - mianowicie zablokowac max procesow do 1, ale to sie wiaze z tym co opisalem powyzej - ciezko trafic na aktywny tym bardziej chcac, zeby 2 osoba zauwazyla co zostalo przed chwila wpisane.
Licze na pomoc. Wielkie dzieki. smile.gif


--------------------
"Zadaniem zolnierza jest walczyc i wykonywac rozkazy.Zadne inne umiejetnosci nie sa od niego wymagane"
Go to the top of the page
+Quote Post
s_w_ir
post 20.11.2003, 22:55:33
Post #2





Grupa: Zarejestrowani
Postów: 315
Pomógł: 1
Dołączył: 6.08.2003
Skąd: Kielce

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


Ja bym to pokombinował z flock();
Chodzi mi o to że by formularz był w oddzielnym pliku i teraz kiedy ktoś wpisuje to zlecenie to plik ma włączony flock(), a kiedy już naciśnie wyślij i przeniesie się na następną stronę to wyłancza blokade.
Ale lepiej sprawdź w manualu to co wymodziłem bo wygląda na dość niepewne rozwiązanie zwłaszcza pod win98.
Go to the top of the page
+Quote Post
bgargas
post 20.11.2003, 23:26:35
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 20.11.2003
Skąd: Chicago

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


Cytat
Ja bym to pokombinował z flock();

Hmmm. Nie bardzo pasuje mi takie rozwiazanie. Wsystkie dane ida prosto do SQL, mo co kolejkowac je do pliku? Mozna wyprobowac, ale nie o to mi chodzilo.. sad.gif
Ma ktos jakis pomysl ciekawszy.
s_w_ir - dzieki za checi.

Pozdrawiam


--------------------
"Zadaniem zolnierza jest walczyc i wykonywac rozkazy.Zadne inne umiejetnosci nie sa od niego wymagane"
Go to the top of the page
+Quote Post
s_w_ir
post 20.11.2003, 23:31:49
Post #4





Grupa: Zarejestrowani
Postów: 315
Pomógł: 1
Dołączył: 6.08.2003
Skąd: Kielce

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


Cytat
s_w_ir - dzieki za checi.

No spoko nie ma sprawy, po prostu nic innego narazie nie przyszło mi do głowy, a pamiętam że takie rozwiązanie dał koleś w liczniku tekstowym, żeby dwie osoby naraz nie mogły otworzyć tego samego pliku a przez to "przypadkowo" nie skopać w nim czegoś(np. nie skasować wartości w nim zapisanej). Dobra mniejsza o to jeszcze coś pokminie.
Go to the top of the page
+Quote Post
s_w_ir
post 20.11.2003, 23:41:01
Post #5





Grupa: Zarejestrowani
Postów: 315
Pomógł: 1
Dołączył: 6.08.2003
Skąd: Kielce

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


Mam lepszy pomysł opartry na tym co wcześniej, ale z wykorzystaniem bazy...
No to robisz sobie jedną tabele która będzie miała jeden wpis.
I tak jeżeli ktoś otwiera skrypt ankiety to robisz update wpisu na dajmy na to "close" gdy ktoś kończy lub rezygnuje z wpisu robisz znowu update tym razem na "open"(albo to samo tylko że z flagą).
No i chyba wiadomo że jeśli kolo wchodzi a w bazie mamy close to wyświetli mu się "poczekaj jesteś w kolejce".
Wydaje mi sie to o wiele wydajniejsze, od tamtego pomysłu.
Pozdro.
Go to the top of the page
+Quote Post
bgargas
post 21.11.2003, 00:03:31
Post #6





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 20.11.2003
Skąd: Chicago

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


Nono.To juz brzmi lepiej - nawet o tym myslalem, ale zastanawialem sie czy rozwiaze to sprawe multi-userow.Ale przeciez wszyscy korzystaja z tego samego wiec nie bedzie problemu.Siade za chwile i napisze, zobaczymy jak bedzie funkcjonowalo...
Caly czas prosze o jakies "sprawdzone" pomysly - moze ktos pisal cos takiego i jest w stanie podpowiedzies swoj - wlasnie sprawdzony sposob.Dochodzi tu jeszcze sprawa, zeby zaraz po wpisaniu przytrzymac jeszcze 20 sekunf zanim odblokujemy flage.Ale to juz chyba sprawa w sql TIME(), he ?
Pozdrawiam.
BTW: caly czas mecze sprawe automatycznego odswiezenia gdy ktos naciska BACK w przegladarce.Wystarczy zwykle polecenie html "content refresh"? OK.
Wielkie dzieki. Podpowiadajcie !


--------------------
"Zadaniem zolnierza jest walczyc i wykonywac rozkazy.Zadne inne umiejetnosci nie sa od niego wymagane"
Go to the top of the page
+Quote Post
scanner
post 21.11.2003, 07:30:44
Post #7





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Pytanie w kwestii logiczne: Dlaczego dwie osoby nie maja miec prawa do rownoczesnej pracy? W takim przypadku lepszym wydawalby sie notes (papierowy) przekazywany z rąk do rąk.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
bgargas
post 21.11.2003, 14:30:38
Post #8





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 20.11.2003
Skąd: Chicago

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


Cytat
Pytanie w kwestii logiczne: Dlaczego dwie osoby nie maja miec prawa do rownoczesnej pracy?


Postaram Ci sie to jakos zrozumiale przedstawic. Co do zeszytu - to wlasnie zamieniam ten standardowy kartkowy na ten smile.gif Chodzi o to, ze firma przyjmuje zlecenia na roboty u danych osow (w tym przypadku chodzi o sanding i wykonczenie podlog). NIE jest dopuszczalne, aby 2 gosci z obslugi customera jednoczesnie umawialo go na robote w dany dzien - a co bedzie gdy ustala taka sama godzine czy uzyja podwojnego wpisu na dany dzien, gdzie zostala tylko 1 wolna robota - no wiec bedzie o jedna za duzo ? :cry: He ? Moze przychodzi Ci cos do gloey jak rozwiazac ten problem - bardzo wazne. Mimo wszystko biore sie teraz i sprobuje na fladze ustawianej w bazie to rozwiazac. Pozdrawiam ! Pomocy !


--------------------
"Zadaniem zolnierza jest walczyc i wykonywac rozkazy.Zadne inne umiejetnosci nie sa od niego wymagane"
Go to the top of the page
+Quote Post
uboottd
post 22.11.2003, 10:45:00
Post #9





Grupa: Zarejestrowani
Postów: 384
Pomógł: 0
Dołączył: 3.04.2003
Skąd: Chorzow

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


Blokowanie mozliwosci pracy moze okazac sie z czasem troche niewygodnawe . Zrob moze tak: w momencie rozpoczecia pracy wpisuj do bazy rezerwacje danego terminu o ile jest wolny i nie zarezerwowany przez kogos innego, potem wypelniasz formularz i po zakonczniu wypwlniania uzupelniasz ten wiersz danymi w formularza lub kasujesz ten wiersz jak klient nagle zrezygnowal. Z kolei wada tego moze sie okazac fat robienia dziur w terminach. Innym pomyslem moze byc najpierw pobranie danych bez okreslonego terminu, i dopiero po tym przydzielenie terminu.
Go to the top of the page
+Quote Post
bgargas
post 22.11.2003, 14:47:49
Post #10





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 20.11.2003
Skąd: Chicago

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


OK ! Wielkie dzieki za podpowiedzi. Po zlozeniu tego co mi napisaliscie i swoim przemysleniom - opracowalem niezawodny sposob (i hope so smile.gif
Mniej wiecej cos takiego (prosto ale skutecznie)
[php:1:0bf2df9e76]<?php
$sql = mysql_query("SELECT * FROM wb_edited WHERE locked='1'");
$locked_check = mysql_num_rows($sql);
if($locked_check == 0) {

$sql1 = mysql_query("SELECT * FROM wb_edited WHERE data='$data' AND isEdited='0'");
$data_check = mysql_num_rows($sql1);
if($data_check == 0) {
mysql_query("UPDATE wb_edited SET data='$data', isEdited='1'");
mysql_query("UPDATE wb_edited SET locked='1'");
}
}
else {
print "BUSY";
die;
}
?>[/php:1:0bf2df9e76]


Pozdrawiam i dzieki smile.gif


--------------------
"Zadaniem zolnierza jest walczyc i wykonywac rozkazy.Zadne inne umiejetnosci nie sa od niego wymagane"
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: 29.06.2025 - 02:21