我是靠谱客的博主 精明电灯胆,最近开发中收集的这篇文章主要介绍请写一段 PHP 代码 ,确保多个进程同时写入同一个文件成功,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

考点:对函数的理解

  • 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;  
}  

最后

以上就是精明电灯胆为你收集整理的请写一段 PHP 代码 ,确保多个进程同时写入同一个文件成功的全部内容,希望文章能够帮你解决请写一段 PHP 代码 ,确保多个进程同时写入同一个文件成功所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部