`

PHP 文件锁定写入

    博客分类:
  • php
php 
阅读更多
PHP文件写入方法,应对多线程写入:
function file_write($file_name, $text, $mode='a', $timeout=30){
	$handle = fopen($file_name, $mode);
	while($timeout>0){
		if ( flock($handle, LOCK_EX) ) {
			$timeout--;
			sleep(1);
		}
	}
	if ( $timeout > 0 ){
		fwrite($handle, $text.'\n');
		flock($handle, LOCK_UN);
		fclose($handle);
		return true;
	}
	return false;
}

其中flock(int $handle, int $operation)函数操作的 handle 必须是一个已经打开的文件指针。

operation 可以是以下值之一:

  • 要取得共享锁定(读取的程序),将 operation 设为 LOCK_SH(PHP 4.0.1 以前的版本设置为 1)。
  • 要取得独占锁定(写入的程序),将 operation 设为 LOCK_EX(PHP 4.0.1 以前的版本中设置为 2)。
  • 要释放锁定(无论共享或独占),将 operation 设为 LOCK_UN(PHP 4.0.1 以前的版本中设置为 3)。
  • 如果不希望 flock() 在锁定时堵塞,则给 operation 加上 LOCK_NB(PHP 4.0.1 以前的版本中设置为 4)。
分享到:
评论

相关推荐

    PHP文件锁定写入实例解析

    主要介绍了PHP文件锁定写入实例解析,需要的朋友可以参考下

    PHP文件锁函数flock()详细介绍

    在PHP中提供了flock()函数,可以对文件使用锁定机制(锁定或释放文件)。当一个进程在访问文件时加上锁,其他进程要想对该文件进行访问,则必须等到锁定被释放以后。这样就可以避免在并发访问同一个文件时破坏数据。...

    PHP+Ajax网站开发典型实例

    第2章 PHP文件实例 实例12 获取文件信息 实例13 文件写入并锁定 实例14 读取文件信息 实例15 随机提取文件行 实例16 获得磁盘剩余空间 实例17 搜索文件或文件夹 实例18 文件下载 实例19 文件上传 实例20 ...

    PHP+Ajax网站开发典型实例-源代码

    第2章 PHP文件实例 实例12 获取文件信息 实例13 文件写入并锁定 实例14 读取文件信息 实例15 随机提取文件行 实例16 获得磁盘剩余空间 实例17 搜索文件或文件夹 实例18 文件下载 实例19 文件上传 实例20 网页计数器 ...

    UsualToolCMS大众版 v8.0 Release.zip

    增加安装锁定机制,重装需重置安装文件。 修复支付宝支付逻辑错误。 UsualToolCMS安装说明 安装地址:setup/index.php,安装网站请按后台提示及时删除安装文件。 必选:MYSQLI扩展 可选:CURL扩展 在安装时,...

    PHP使用flock实现文件加锁的方法

    本文实例讲述了PHP使用flock实现文件加锁的方法。...简单来说,就是对一个文件进行锁定操作,使得多进程访问该文件时受到限制,从而防止冲突。举个例子: <?php $file = fopen("test.txt","w+")

    Flysystem:本地和远程文件系统的抽象-开源

    由于现在写入将被覆盖,因此不再需要文件存在性检查。 对于所有“通过网络文件系统”来说,这都是一个巨大的胜利! 现在,所有适配器都提供了自己的界面,以将可见性输入和配置选项转换为其实现特定的权限。

    jsondoc:使用 JSON 的简单、基于文件的对象文档数据库

    写入和删除操作使用基本事务语义提交,使用简单的数据库级锁定来防止同时写入,使用早期错误检测和故障自动回滚。 有关其他技术细节,请参阅下面的“限制”。应用程序接口API 由两个类组成: DocumentStore代表与...

    Cm_RedisSession:具有乐观锁定的Magento的基于Redis的会话处理程序

    Mysql处理程序回退到文件处理程序。 当会话的数据大小超过压缩阈值时,会话数据将被压缩。 支持的压缩库是“ gzip”,“ lzf”,“ lz4”和“ snappy”。 -Gzip速度最慢,但压缩率却最佳。 -Lzf可以通过PECL轻松...

    Cm_Cache_Backend_File:改进了Zend_Cache_Backend_File的替代品-与Magento完美搭配!

    元数据和缓存记录存储在同一个文件中,而不是存储在单独的文件中,从而导致更少的inode和更少的文件统计/读取/写入/锁定/取消链接操作。 而且,由于adler32哈希算法和前缀,原始的哈希目录结构的分布非常差。 多级...

    Linux Apache+Proftpd构建虚拟主机时要注意的几个安全问题

    将FTP锁定用户在自己的主目录下。 apache以nobody运行(以独立apache用户更好),读hostuser的脚本文件。 对于要写入的目录uploads和cache,必须设定777,且循环设定其子目录。两个目录禁止脚本执行(.htaccess:...

    XYHCMS网站管理系统 v3.6 bulid1012

    [√]权限规则和菜单合并(或菜单移到权限规则里)[√]支持手机二级域名,API二级域名(在入口文件处开启)[√]管理员操作日志(目前只写入登录日志)[√]后台管理员登录1个小时内连续失败超过10次,IP锁定2个小时[√...

    盾灵广告联盟系统 v2.2.zip

    1、 将文件全部上传至网站目录 2、 执行 http://域名/install/index.php  3、 根据提示输入数据库配置信息进行安装即可 后台默认路径: /admin/index.php 为了安全起见,建议更换后台目录名称   盾灵广告联盟...

    MySQL 5.1官方简体中文参考手册

    8.6. mysqlbinlog:用于处理二进制日志文件的实用工具 8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-...

    MySQL 5.1中文手冊

    8.6. mysqlbinlog:用于处理二进制日志文件的实用工具 8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-...

    MySQL 5.1参考手册 (中文版)

    8.6. mysqlbinlog:用于处理二进制日志文件的实用工具 8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-...

    mysql官方中文参考手册

    8.6. mysqlbinlog:用于处理二进制日志文件的实用工具 8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-...

    MYSQL中文手册

    8.6. mysqlbinlog:用于处理二进制日志文件的实用工具 8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. ...

Global site tag (gtag.js) - Google Analytics