请写一段 PHP 代码 ,确保多个进程同时写入同一个文件成功
来源:互联网 发布:linux 禁用显卡 驱动 编辑:程序博客网 时间:2024/05/19 16:03
考点:对函数的理解
- fopen:打开文件或者URL
参数1:文件地址或者URL 参数2:mode 参数指定了所要求到该流的访问类型 'r' 只读方式打开,将文件指针指向文件头。 'r+' 读写方式打开,将文件指针指向文件头。 'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 'w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 'a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
- fwrite : 写入文件
参数1:文件名文件系统指针 参数2: 要写入的内容 string类型 返回值: 写入成功返回写入的字符数,失败返回false
- flock: 轻便的咨询文件锁定
参数1:文件系统指针,是典型地由 fopen() 创建的 resource(资源)。 参数2:模式 LOCK_SH取得共享锁定(读取的程序)。 LOCK_EX 取得独占锁定(写入的程序。 LOCK_UN 释放锁定(无论共享或独占)。 如果不希望 flock() 在锁定时堵塞,则是 LOCK_NB(Windows 上还不支持)。 返回值:成功时返回 TRUE, 或者在失败时返回 FALSE。
- fclose :关闭一个打开的文件指针
参数1:文件名 参数2:成功时返回 TRUE, 或者在失败时返回 FALSE。
- 方案一
function writeData($filepath, $data) { $fp = fopen($filepath,'a'); do{ usleep(100); }while (!flock($fp, LOCK_EX)); //LOCK_EX 取得独占锁定(写入的程序)进行排它型锁定 获取锁 有锁就写入,没锁就得 $res = fwrite($fp, $data."\n"); flock($fp, LOCK_UN); //LOCK_UN 释放锁定(无论共享或独占)。 fclose($fp); return $res; }
- 方案二
function write_file($filename, $content) { $lock = $filename . '.lck'; $write_length = 0; while(true) { if( file_exists($lock) ) { usleep(100); } else { touch($lock); $write_length = file_put_contents($filename, $content, FILE_APPEND); break; } } if( file_exists($lock) ) { unlink($lock); } return $write_length; }
0 0
- 请写一段 PHP 代码 ,确保多个进程同时写入同一个文件成功
- 请写一段 PHP 代码 ,确保多个进程同时写入同一个文件成功
- 请写一段PHP代码,确保多个进程同时写入同一个文件(腾讯)
- 写一段PHP代码,确保多个进程同时写入同一个文件成功(腾讯)
- PHP写一段代码,确保多个进程同时写入一个文件成功
- 写一个函数,确保多个进程同时写入一个文件成功
- 多个线程同时写入一个文件问题------php
- 面试题:请给出一段代码描述字符串写入文件
- FIFO 两个进程同时写同一个FIFO
- Log4net同时写入多个日志文件
- 表单代码和PHP代码写到同一个文件中
- PHP文件加锁确保多线程写入安全
- vim在同一个窗口中同时编辑多个文件
- vim在同一个窗口中同时编辑多个文件
- vim在同一个窗口中同时编辑多个文件
- vim在同一个窗口中同时编辑多个文件
- vim在同一个窗口同时编辑多个文件
- vim在同一个窗口中同时编辑多个文件
- 字段串日期进行比较
- 【MapReduce Java】简单的平均距离计算
- Tomcat7用户配置
- 表单无法提交设为disabled的input
- spring之依赖注入之理解
- 请写一段 PHP 代码 ,确保多个进程同时写入同一个文件成功
- Sparse Graph HDU
- 一些最长的东西(dp+后缀数组)
- AspectJ使用示例
- react实现点击按钮添加一项(开始显示一项默认的) 点击每项按钮添加对应的小项
- 机器学习
- Linux命令基础11-more命令
- STL容器之string
- [实训]如何用eclipse创建用户库