АКЦЫЯ: бясплатныя месячныя курсы па стварэнні сайтаў
на выбар: вёрстка, JavaScript, PHP, Python або фрэймворкі. Сёння апошні дзень для запісу! Націскай!
310 of 410 menu

Функцыя flock

Функцыя flock ўстанаўлівае або здымае блакіроўку файла. Першым параметрам яна прымае паказальнік на файл, атрыманы праз fopen, другім параметрам - тып блакіроўкі (LOCK_SH, LOCK_EX або LOCK_UN), а трэцім неабавязковым параметрам - сцяг для неблакіруючай аперацыі.

Сінтаксіс

flock(resource $handle, int $operation, int &$would_block = null): bool

Прыклад

Блакіроўка файла для эксклюзіўнага доступу (запісу):

<?php $file = fopen("data.txt", "c+"); if (flock($file, LOCK_EX)) { ftruncate($file, 0); fwrite($file, "New data"); flock($file, LOCK_UN); } fclose($file); ?>

Прыклад

Раздзяляемая блакіроўка для чытання:

<?php $file = fopen("data.txt", "r"); if (flock($file, LOCK_SH)) { $content = fread($file, filesize("data.txt")); flock($file, LOCK_UN); } fclose($file); echo $content; ?>

Прыклад

Неблакіруючая спроба захопу блакіроўкі:

<?php $file = fopen("data.txt", "c+"); if (flock($file, LOCK_EX | LOCK_NB, $would_block)) { if ($would_block) { echo "File is locked by another process"; } else { fwrite($file, "Data"); flock($file, LOCK_UN); } } fclose($file); ?>

Глядзіце таксама

  • функцыю fopen,
    якая адкрывае файл
  • функцыю fclose,
    якая зачыняе файл
  • функцыю is_writable,
    якая правярае магчымасць запісу
byenru