Heim >Backend-Entwicklung >PHP-Tutorial >Teilen Sie zwei Lösungen für PHP, um mehrere Prozesse zu implementieren, die gleichzeitig dieselbe Datei schreiben

Teilen Sie zwei Lösungen für PHP, um mehrere Prozesse zu implementieren, die gleichzeitig dieselbe Datei schreiben

黄舟
黄舟Original
2017-03-30 09:54:263435Durchsuche

Testpunkt: Verständnis der Funktion

fopen: Eine Datei öffnen oderURL

参数1:文件地址或者URL  
参数2:mode 参数指定了所要求到该流的访问类型  
    'r' 只读方式打开,将文件指针指向文件头。  
    'r+'    读写方式打开,将文件指针指向文件头。  
    'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。  
    'w+'    读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。  
    'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。  
    'a+'    读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

fwrite: Eine Datei schreiben

参数1:文件名文件系统指针  
参数2: 要写入的内容 string类型  
返回值: 写入成功返回写入的字符数,失败返回false

flock: Leichter Hinweis zum Sperren von Dateien

参数1:文件系统指针,是典型地由 fopen() 创建的 resource(资源)。  
参数2:模式  
    LOCK_SH取得共享锁定(读取的程序)。  
    LOCK_EX 取得独占锁定(写入的程序。  
    LOCK_UN 释放锁定(无论共享或独占)。  
    如果不希望 flock() 在锁定时堵塞,则是 LOCK_NB(Windows 上还不支持)。  
  
返回值:成功时返回 TRUE, 或者在失败时返回 FALSE。

fclose: Schließen eines geöffneten Dateizeigers

参数1:文件名  
参数2:成功时返回 TRUE, 或者在失败时返回 FALSE。

Option 1

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

Option 2 (die Methode, sich selbst zu markieren)

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

Das obige ist der detaillierte Inhalt vonTeilen Sie zwei Lösungen für PHP, um mehrere Prozesse zu implementieren, die gleichzeitig dieselbe Datei schreiben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn