flock

(PHP 4, PHP 5, PHP 7)

flock������ѯ�ļ�����

˵��

flock ( resource $handle , int $operation [, int &$wouldblock ] ) : bool

flock() ����ִ��һ���򵥵Ŀ������κ�ƽ̨��ʹ�õĶ�ȡ/д��ģ�ͣ������󲿷ֵ� Unix ������������� Windows����

�� PHP 5.3.2�汾֮ǰ����Ҳ�ᱻ fclose() �ͷţ��ڽű���������Զ����ã���

PHP ֧������ѯ��ʽ��Ҳ����˵���з��ʳ������ʹ��ͬһ��ʽ����, ���������Ṥ��������ȫ���ļ���һ����㷽���� Ĭ������£������������������ȡ���������ͨ�������ĵ��� LOCK_NB ѡ�������ƣ��ڷ� Windows ƽ̨�ϣ���

����

handle

�ļ�ϵͳָ�룬�ǵ��͵��� fopen() ������ resource(��Դ)��

operation

operation ����������ֵ֮һ��

  • LOCK_SHȡ�ù�����������ȡ�ij��򣩡�
  • LOCK_EX ȡ�ö�ռ������д��ij���
  • LOCK_UN �ͷ����������۹�����ռ����

�����ϣ�� flock() ������ʱ���������� LOCK_NB��Windows �ϻ���֧�֣���

wouldblock

�������������Ļ���EWOULDBLOCK ����������£�����ѡ�ĵ����������ᱻ����Ϊ TRUE����Windows �ϲ�֧�֣�

����ֵ

�ɹ�ʱ���� TRUE�� ������ʧ��ʱ���� FALSE��

������־

�汾 ˵��
5.3.2 ���ļ���Դ����ر�ʱ�����Զ�����������Ҫ���������ֶ����С�
4.0.1 �����˳��� LOCK_XXX�� ֮ǰ�����ʹ�� 1 ���� LOCK_SH��2 ���� LOCK_EX��3 ����LOCK_UN��4 ���� LOCK_NB��

����

Example #1 flock() ����

<?php

$fp 
fopen("/tmp/lock.txt""r+");

if (
flock($fpLOCK_EX)) {  // ��������������
    
ftruncate($fp0);      // truncate file
    
fwrite($fp"Write something here\n");
    
fflush($fp);            // flush output before releasing the lock
    
flock($fpLOCK_UN);    // �ͷ�����
} else {
    echo 
"Couldn't get the lock!";
}

fclose($fp);

?>

Example #2 flock() ʹ�� LOCK_NB ѡ��

<?php
$fp 
fopen('/tmp/lock.txt''r+');

/* Activate the LOCK_NB option on an LOCK_EX operation */
if(!flock($fpLOCK_EX LOCK_NB)) {
    echo 
'Unable to obtain lock';
    exit(-
1);
}

/* ... */

fclose($fp);
?>

ע��

Note:

flock() uses mandatory locking instead of advisory locking on Windows. Mandatory locking is also supported on Linux and System V based operating systems via the usual mechanism supported by the fcntl() system call: that is, if the file in question has the setgid permission bit set and the group execution bit cleared. On Linux, the file system will also need to be mounted with the mand option for this to work.

Note:

���� flock() ��Ҫһ���ļ�ָ�룬 ��˿��ܲ��ò���һ������������ļ�����������ͨ��дģʽ�򿪵��ļ��ķ��ʣ��� fopen() �����м��� "w" �� "w+"����

Note:

May only be used on file pointers returned by fopen() for local files, or file pointers pointing to userspace streams that implement the streamWrapper::stream_lock() method.

Warning

Assigning another value to handle argument in subsequent code will release the lock.

Warning

�ڲ��ֲ���ϵͳ�� flock() �Խ��̼�ʵ�֡�����һ�����̷߳����� API������ ISAPI��ʱ�����ܲ��������� flock() �������ļ�����Ϊ������ͬһ������ʵ�������������̵߳� PHP �ű����ԶԸ��ļ����д���

flock() ��֧�־ɵ��ļ�ϵͳ���� FAT �Լ���������ϵͳ����ˣ��˻��������Ƿ��� FALSE�������Ƕ� Windows 98 �û���˵����