![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 161 Pomógł: 1 Dołączył: 11.02.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Co do zapisywania adresu ip używam INET_ATON.
Piszę panel do zarządzania siecią lokalną. Użytkownik przy pierwszym podłączeniu się do sieci zostaje przekierowany na stronę gdzie może dodać się do bazy. Zostaje wyciągnięty adres mac i generuje ip. (Później na podstawie bazy generuje odpowiednie pliki konfiguracyjne np. httpd.conf). Mam pewna pulę adresów ip wyznaczoną z góry. Zrobiłem to delikatnie mówiąc "na szybko" czyli mam skrypt w php który sprawdza po kolei czy dany adres ip już jest w bazie jeśli nie to dodaje. Ma to co najmniej 2 wady: 1. W pesymistycznej wersji (ostatni możliwy adres ip z puli) to ponad 1000 zapytań. 2. W jednej chwili mogą dodawać się 2 osoby do bazy może zdarzyć się, że 2 osoby naraz znajdą wilnego i będą próbowały się dodać. Macie jakiś inny pomysł? Myślałem o napisaniu funkcji w mysql która by to robiła ale nie chce przenosić logiki do bazy.... |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 78 Pomógł: 5 Dołączył: 15.04.2006 Ostrzeżenie: (10%) ![]() ![]() |
ja bym to zrobil tak, ze ustawialbym sobie 2 pola w bazie: adres_ip, oraz znacznik(wolny czy zajety), nastepnie pobieralbym selectem wszystkie ip gdzie jest znacznik "wolny" w celu zabezpieczenia sie przed ty ze ktos nas moze akurat uiec dostajac jednoczesnie ip pobieralbym np 5 pierwszych wolnych ip potem jakis foreach wszystko zamknal w transakcji, w ktorej najpierw upewnialbym sie czy przypadkiem w miedzyczasie ip sie nie zmienilo na stan "zajety" jesli nie to wtedy udate set nasze_ip i ustawienie znacznika zajetosci na 1 w przeciwnym wypadku biore kolejny z moich kilku pobranych wolnych ip i ponawiam transakcje.
|
|
|
![]()
Post
#3
|
|
Newsman Grupa: Moderatorzy Postów: 2 033 Pomógł: 290 Dołączył: 21.12.2007 Skąd: Łódź ![]() |
A nie prościej będzie zastosować blokowanie tabeli z IP ?
http://dev.mysql.com/doc/refman/5.1/en/lock-tables.html |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 161 Pomógł: 1 Dołączył: 11.02.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Nie pomyślałem o tym, dzięki.. Myślę, że coś takiego zrobię. + funkcja która w sytuacji zablokowania tableki odczeka powiedzmy 2s i spr jeszcze raz dodać...
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 23:02 |