O blocare portabil fișier consultativ

turmă bool (operațiune de resurse $ mâner. int $ [, int $ Wouldblock])

turmă () permite un model simplu cititor / scriitor, care poate fi folosit pe aproape toate platformele (inclusiv cele mai multe arome de Unix și chiar Windows).

În versiunile anterioare PHP 5.3.2 Lock, de asemenea, eliberat de apel () funcția fclose (care este, de asemenea, numit în mod automat la sfârșitul script-ul).

PHP suporta un mod portabil de blocare consultativ (blocare Advisory) complet întregul dosar (ceea ce înseamnă că toate programele care accesul la dosar trebuie să utilizeze aceeași metodă de blocare, în caz contrar blocarea nu va funcționa). În mod implicit, această funcție va aștepta un sistem de blocare; acest comportament poate fi modificat prin parametrul LOCK_NB descris mai jos.

lista de parametri

Pointer (resursă) la dosar, de obicei creat folosind fopen ().

operațiune poate lua următoarele valori:
  • LOCK_SH pentru blocare partajat (citește).
  • LOCK_EX pentru obținerea unui blocare exclusivă (scriere).
  • LOCK_UN pentru a elibera dispozitivul de blocare (partajat sau exclusiv).

De asemenea, este posibil să se adauge LOCK_NB constantă ca masca de biți pentru oricare dintre operațiunile de mai sus, dacă nu doriți să așteptați pentru turmă () pentru a obține un sistem de blocare.

Parametrul opțional al treilea este setat la 1 dacă blocarea este de blocare (cod de eroare EWOULDBLOCK).

valorile de returnare

Returnează TRUE în cazul succesului sau FALSE în cazul eșecului.

notițe

În Windows efectiv () utilizează obligatoriu (obligatoriu) în loc de blocare consultativ. blocare obligatorie este susținută pe și sistemele de operare Linux, bazat pe V System folosind un mecanism standard, care prevede un fcntl apel sistem (): adică, fișierul dorit ar trebui să fie instalat de acces biți setgid și performanța grupului de biți nespecificat. Pentru funcționarea corectă a sistemului Linux, sistemul de fișiere ar trebui să fie, de asemenea, montat cu mand.

Datorită faptului că turma () funcție necesită un pointer la un fișier, poate fi necesar să utilizați un fișier de blocare special pentru a restricționa accesul la fișierul pe care intenționați să fie curățate, prin deschiderea acesteia în modul de scriere (folosind „w“ sau „w + „argumentul ca funcția fopen ()).

Acesta poate fi utilizat numai pe descriptorii de fișiere locale returnate de funcția fopen (). sau un fișier descriptori fluxuri de utilizator, punerea în aplicare a metodei streamWrapper :: stream_lock ().

Atribuirea o altă valoare mânerul argument în codul ulterior va anula blocarea existentă.

Pe unele sisteme de operare efectiv () este pus în aplicare la nivel de proces. Atunci când se utilizează un server multifir API, cum ar fi un ISAPI, nu poți baza pe turma () pentru a proteja fișierele împotriva altor PHP script-uri care rulează în paralel cu fluxul de pe același server!

turmă () nu este acceptat pe sistemele de fișiere mai vechi, cum ar fi FAT și derivații săi, astfel că se va întoarce întotdeauna FALSE în această setare (acest lucru este valabil mai ales pentru utilizatorii de Windows 98).

articole similare