![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 29.11.2004 Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich.
Napewno wielu z Was slyszalo o niezawodnosci funkcji flock(), tak samo jak i ja. Niestety w praktyce sprawa wyglada zupelnie inaczej. Przy dosc duzym obciazeniu - rzedu 200 uzytkownikow na sekunde - funkcja ta poprostu odpusza a efektem tego jest usuwanie zawartosci blokowanych plikow lub ich czesciowa destrukcja. Oto kod ktory wywoluje ta sytuacje:
W zwiazku z tym mam pytanie. Czy jest mozliwe napisanie funkcji ktora bedzie dawala calkowita pewnosc ze dane nie zostana utracone ? Serdecznie dziekuje za odpowiedz i pozdrawiam. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 0 Dołączył: 4.02.2003 Ostrzeżenie: (0%) ![]() ![]() |
Powiem tylk o tyle ze flock przy duzym obciazeniu wlasnie zawodzi i jest ten problem od dawna znany
Jedyny konkretny sposob to przesiadka na baze. Inne takie jak implementacja kopi rownozednych, ktore podczas wykonywania tworzysz i jesli dane ci gina mozesz w ciagu ulamka sekundy odtworzyc zawartosc lub implementacja ograniczen ilosci zapytan na plik to tylko pol srodki i wczesniej czy pozniej i tak przesiadziesz sie na baze. Ten post edytował evo 5.12.2006, 00:36:45 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 359 Pomógł: 1 Dołączył: 16.04.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
200 userów na sekunde ? sic!
|
|
|
![]()
Post
#4
|
|
Grupa: Nieautoryzowani Postów: 92 Pomógł: 15 Dołączył: 21.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Hej
a przypadiem nie powinieneś sprawdzić co zwraca flock? może jak zwróci false to znaczy ze plik jest juz zablokowany i trzeba sobie odpuscic zapisywanie do niego ewentualnie poczekac chwilke i znowu sprobowac
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 29.11.2004 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Szybciej:
Co najwyżej ograniczenie czasowe lub ilości powtórzeń (w sumie to to samo) można dorzucić. -------------------- Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami. |
|
|
![]()
Post
#7
|
|
Grupa: Nieautoryzowani Postów: 92 Pomógł: 15 Dołączył: 21.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Oczywiście nie tylko do zapisu trzeba tak zrobić ale również do odczytu, aby krzaczki nie wyskakiwały
![]() Na prośbę załączam z blokowaniem, od razu mówię że nie spr. więc przejrzeć i przetestować, oraz jest kwestia file() bo przecież on również odczytuje z pliku i może się to nie powieść wtedy zwraca false. Nie miałem doświadczenia z tak obciążonymi systemami, a manual nic nie mówi na temat blokowania pliku bo przecież go nie otwieramy... tak jak jest teraz powinno już nie być kłopotów, ale bym radził dorzucić jakiś warunek wyjścia z tych pętli, bo jak się zrobi tak że zablokuje plik do zapisu i będzie się próbowało zrobić np. file() to się po prostu zawiesi (jeśli nie zwolni tego do zapisu). Mamnadzieje że to już będzie działać sprawnie, ale nie daję żadnej gwarancji.
-------------------- Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 29.11.2004 Ostrzeżenie: (0%) ![]() ![]() |
Niestety podane przez Ciebie rozwiazanie nie dziala poprawnie.
Wyskakuje mi blad w linii nr. 35. |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Oj, czy tak ciężko zobaczyć co jest nie tak?
Chodziło o to że w tej funkcji w odróżnieniu od reszty uchwyt pliku masz w zmiennej $file (a winnych masz w $fp) Popraw jeszcze funkcje file_LinesCount tzn. zamień linie 55 z:
na
A mówiłem, że nie testowałem. a jeszcze w file_LinesCount popraw flock bo też odwołuje się do złej zmiennej. Ten post edytował Sedziwoj 6.12.2006, 10:28:54 -------------------- Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 19:16 |