Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 0 Dołączył: 2.06.2011 Ostrzeżenie: (0%)
|
raz na jakiś czas nie zapisuje wartości i liczy od nowa... ale dlaczego? jak można temu zaradzić? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 22.01.2010 Ostrzeżenie: (0%)
|
Ok, zgadzam się. Ale tylko po części : )
Musiałem sprawdzić. Nie myślałem, że dopisywanie danych do dużego pliku przez file_put_contents jest tak wolne. Z mojego testu wynika, że odczytywanie stanu licznika przez filesize() jest prawie 5x szybsze. Natomiast zwiększanie jego stanu w przypadku zasugerowanego przeze mnie algorytmu - od 2 do 4 razy wolniejsze. Ponieważ kolega chce, aby zwiększenie licznika nastąpiło tylko raz w ciągu sesji, to z obliczeń, które poczyniłem wynika, że jeżeli użytkownik odwiedzi średnio 15 i więcej podstron, wówczas opcja z filesize() jest szybsza. I jeszcze jedno: LOCK_EX. Jeżeli jeden użytkownik zablokuje dostęp do pliku przy podanym przez Ciebie file_put_contents($file,$content,LOCK_EX), wówczas drugi użytkownik w ciągu tych kilku milisekund nie ma dostępu do odczytu jego wartości linijkę wyżej. Odczytana wartość będzie równa '' i licznik zostanie wyzerowany. LOCK powinien nastąpić przed odczytaniem danych. Ten post edytował stealz 29.11.2012, 01:18:03 |
|
|
|
marcinek37 [php] mega prosty licznik odwiedzin, a jednak zawodny 28.11.2012, 01:30:40
Sephirus Możliwe, że są równoległe odwołania do tego pliku.... 28.11.2012, 08:30:50
cudny Znając życie wkrada ci się biały znak na początku ... 28.11.2012, 12:07:29
stealz Inny sposób: zamiast odczytywać wartość, dopisuj d... 28.11.2012, 22:22:52
marcinek37 [PHP] pobierz, plaintext <?$path = 'counter.txt... 28.11.2012, 22:54:42
cudny Jeśli się o to boisz to daj flagę LOCK_EX
[PHP] p... 28.11.2012, 23:16:12
marcinek37 czyli w ten sposób?
[PHP] pobierz, plaintext ... 2.12.2012, 11:54:28
cudny [PHP] pobierz, plaintext file_put_contents($f... 2.12.2012, 15:25:35
marcinek37 czyli generalnie chodzi o coś takiego:
[PHP] pobie... 4.12.2012, 13:44:43
Crozin Odnośnie blokady: musisz założyć blokadę (zarówno ... 4.12.2012, 14:39:13
marcinek37 Crozin, czyli jeśli użyję tego kodu, który zapropo... 4.12.2012, 16:17:19
Crozin Żeby licznik nagle nie zwariował musisz zadbać o t... 4.12.2012, 21:55:18
marcinek37 chyba można stwierdzić, że skrypt, który zapropono... 5.12.2012, 16:05:22
Crozin Jeżeli potrzebujesz jedynie odczytać zawartość lic... 5.12.2012, 16:15:44 ![]() ![]() |
|
Aktualny czas: 30.12.2025 - 12:09 |