Запіс на курсы па HTML, CSS, JavaScript, PHP, Python, фрэймворкам і CMS,
а таксама: дапамога ў пошуку працы і заказаў, стажыроўка на рэальных праектах→
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