Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Generowanie adresu ip i zapisanie o w bazie.
sanchoo
post
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....
Go to the top of the page
+Quote Post
shine
post
Post #2





Grupa: Zarejestrowani
Postów: 78
Pomógł: 5
Dołączył: 15.04.2006

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post
blooregard
post
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
Go to the top of the page
+Quote Post
sanchoo
post
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ć...
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: 15.09.2025 - 23:02