(PHP 4, PHP 5, PHP 7)
flock — ������ѯ�ļ�����
$handle
, int $operation
[, int &$wouldblock
] ) : boolflock() ����ִ��һ���Ŀ������κ�ƽ̨��ʹ�õĶ�ȡ/д��ģ�ͣ������ֵ� Unix ������������� Windows����
�� PHP 5.3.2�汾֮ǰ����Ҳ�ᱻ fclose() �ͷţ��ڽű���������Զ����ã���
PHP ֧������ѯ��ʽ��Ҳ����˵���з��ʳ������ʹ��ͬһ��ʽ����, ���������Ṥ��������ȫ���ļ���һ����㷽����
Ĭ������£������������������ȡ���������ͨ�������ĵ��� LOCK_NB
ѡ�������ƣ��ڷ� Windows ƽ̨�ϣ���
handle
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($fp, LOCK_EX)) { // ��������������
ftruncate($fp, 0); // truncate file
fwrite($fp, "Write something here\n");
fflush($fp); // flush output before releasing the lock
flock($fp, LOCK_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($fp, LOCK_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.
Assigning another value to handle
argument in
subsequent code will release the lock.
�ڲ��ֲ���ϵͳ�� flock() �Խ��̼�ʵ�֡�����һ�����̷߳����� API������ ISAPI��ʱ�����ܲ��������� flock() �������ļ�����Ϊ������ͬһ������ʵ�������������̵߳� PHP �ű����ԶԸ��ļ����д���
flock() ��֧�־ɵ��ļ�ϵͳ���� FAT
�Լ���������ϵͳ����ˣ��˻��������Ƿ��� FALSE
�������Ƕ� Windows 98 �û���˵����