Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> blokowanie dostepu do plikow, blokowanie dostepu do plikow
Artelo
post
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 21.07.2005

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


Jestem tu nowy wiec chcialbym sie najpierw ze wszystkimi przywitac. Witam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Napisalem sobie prosty skrypcik w php do zliczania wejsc na poszczegolne kategorie strony.

  1. <?php
  2.  
  3.  
  4. if(file_exists(&#092;"dupa/$kateg\")) 
  5.    { 
  6.       $file=fopen(&#092;"dupa/$kateg\", \"r\"); 
  7.       flock($file, 1);              
  8.  
  9.       $ile=fgets($file, 100); 
  10.  
  11.       flock($file, 3); 
  12.       fclose($file); 
  13.  
  14.       $ile++; 
  15.    } 
  16.    else 
  17.       $ile=1; 
  18.  
  19.    $file=fopen(&#092;"dupa/$kateg\", \"w\"); 
  20.    flock($file, 2); 
  21.  
  22.    fwrite($file, $ile); 
  23.  
  24.    flock($file, 3); 
  25.    fclose($file); 
  26.  
  27.  
  28. ?>

(IMG:http://forum.php.pl/uwaga.gif) - nospor

W moim mniemaniu wszystko jest dobrze bo dostep do zapisu jak i odczytu jest blokowany... Jednak okazuje sie ze tak nie jest. Przy kliku tysiacach wywolan dziennie pliki w ktorych zapisane sa liczniki odmawiaja posluszenstwa. Okazuje sie ze tego typu blokowanie nie spelnia zadania i widocznie mozliwy jest rownoczesny dostep do jego zapisu co jest przyczyna problemu.

Da sie w zablokowac owe pliki w jakis inny i bardziej efektywny sposob?
Potrzebny mi porsty licznik oparty na plikach txt wiec baza danych odpada.

Bardzo prosze o pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
vala
post
Post #2





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 12.01.2005

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


a moze chodzi o to?(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Kod
Warning:
flock() will not work on NFS and many other networked file systems. Check your operating system documentation for more details.

On some operating systems flock() is implemented at the process level. When using a multithreaded server API like ISAPI you may not be able to rely on flock() to protect files against other php scripts running in parallel threads of the same server instance!

flock() is not supported on antiquated filesystems like FAT and its derivates and will therefore always return FALSE under this environments (this is especially true for Windows 98 users).

Dodałem bbcode. Też o tym myślałem. Dlatego też nie używam flock - nospor
Go to the top of the page
+Quote Post

Posty w temacie


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: 6.10.2025 - 12:12