欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php 多線程上下文中安全寫文件實現(xiàn)代碼

 更新時間:2009年12月28日 22:28:01   作者:  
提供一個php多線程上下文中安全寫文件的實現(xiàn)方法。這個實現(xiàn)沒有使用php 的file lock機制,使用的是臨時文件機制。多線程中的各個線程都是對各自(每個線程獨占一個)的臨時文件寫,然后再同步到原文件中。
復制代碼 代碼如下:

<?php
/**
* @usage: used to offer safe file write operation in multiple threads context, arbitory file type
* @author: Rocky Zhang
* @time: Nov. 11 2009
* @demo[0]: $handler = mfopen($file, 'a+');
* mfwrite($handler, $str);
*/
function mfopen($file, $mode='w+') {
$tempfile = generateTempfile('./tempdir', $file);
preg_match('/b/i', $mode) || ($mode .= 'b'); // 'b' is recommended
if (preg_match('/\w|a/i', $mode) && !is_writable($file)) {
exit("{$file} is not writable!");
}
$filemtime = $filemtime2 = 0;
$tempdir = dirname($tempfile);
is_dir($tempdir) || mkdir($tempdir, 0777);
do { // do-while used to avoid modify in a long time copy
clearstatcache();
$filemtime = filemtime($file);
copy($file, $tempfile);
$filemtime2 = filemtime($file);
} while ( ($filemtime2 - $filemtime) != 0 );
if (!$handler = fopen($tempfile, $mode)) {
exit('Fail on opening tempfile, write authentication is must on temporary dir!');
}
return array(0=>$handler, 1=>$filemtime, 2=>$file, 3=>$tempfile, 4=>$mode);
}

// I do think that this function should be optimized further
function mfwrite(&$handler, $str='') {
if (strlen($str) > 0) {
$num = fwrite($handler[0], $str);
fflush($handler[0]);
}
clearstatcache();
$mtime = filemtime($handler[2]);
if ( $mtime == $handler[1] ) { // compare between source file and temporary file
if ( $num && $num > 0 ) { // temporary file has been updated, copy to source file
copy($handler[3], $handler[2]) || exit;
$handler[1] = filemtime($handler[3]);
touch($handler[2], $handler[1], $handler[1]);
}
} else { // source file has been modified, load source file to temporary file
copy($handler[2], $handler[3]) || exit;
touch($handler[3], $mtime, $mtime);
$handler[1] = $mtime;
}
}

function generateTempfile($tempdir='tempdir', $file) {
$rand = md5(microtime());
return "{$tempdir}/{$rand}_".$file;
}
?>
您可能感興趣的文章:

相關(guān)文章

  • win10環(huán)境PHP 7 安裝配置【教程】

    win10環(huán)境PHP 7 安裝配置【教程】

    PHP,是英文超文本預處理語言Hypertext Preprocessor的縮寫。PHP 是一種 HTML 內(nèi)嵌式的語言,是一種在服務(wù)器端執(zhí)行的嵌入HTML文檔的腳本語言,語言的風格有類似于C語言,被廣泛地運用。
    2016-05-05
  • PHP基于SimpleXML生成和解析xml的方法示例

    PHP基于SimpleXML生成和解析xml的方法示例

    這篇文章主要介紹了PHP基于SimpleXML生成和解析xml的方法,結(jié)合完整實例形式分析了php使用SimpleXML生成及解析xml格式數(shù)據(jù)的具體操作技巧,需要的朋友可以參考下
    2017-07-07
  • php實現(xiàn)的mongoDB單例模式操作類

    php實現(xiàn)的mongoDB單例模式操作類

    這篇文章主要介紹了php實現(xiàn)的mongoDB單例模式操作類,結(jié)合實例形式分析了php基于單例模式操作MongoDB數(shù)據(jù)庫的數(shù)據(jù)庫封裝類相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2018-01-01
  • PHP簡單字符串過濾方法示例

    PHP簡單字符串過濾方法示例

    這篇文章主要介紹了PHP簡單字符串過濾方法,結(jié)合實例形式分析了php通過對字符串中特殊字符進行正則替換實現(xiàn)字符過濾功能的簡單操作技巧,需要的朋友可以參考下
    2016-09-09
  • PHP原生函數(shù)一定好嗎?

    PHP原生函數(shù)一定好嗎?

    本文介紹了php的一個原生函數(shù)及其優(yōu)化后的函數(shù)執(zhí)行效率對比,得出結(jié)論,php原生函數(shù)不一定是最合適的。
    2014-12-12
  • 淺談php的優(yōu)缺點

    淺談php的優(yōu)缺點

    本文給大家簡單總結(jié)了php的10點優(yōu)點和3個缺點,都是個人對于php開發(fā)的一些體悟和總結(jié),有需要的小伙伴可以參考下。
    2015-07-07
  • 淺析PHP開發(fā)規(guī)范

    淺析PHP開發(fā)規(guī)范

    本篇文章是小編為大家整理的關(guān)于PHP開發(fā)規(guī)范的相關(guān)內(nèi)容,適合PHP初學者,一起參考下吧。
    2018-02-02
  • 詳解PHP優(yōu)化巨量關(guān)鍵詞的匹配

    詳解PHP優(yōu)化巨量關(guān)鍵詞的匹配

    本文完整介紹了我的實現(xiàn)方式,如何將需要運行十小時的任務(wù)優(yōu)化到十分鐘以內(nèi)。雖然實現(xiàn)語言是PHP,但本文介紹的更多的思想,應(yīng)該能給大家一些幫助。
    2021-05-05
  • PHP中使用addslashes函數(shù)轉(zhuǎn)義的安全性原理分析

    PHP中使用addslashes函數(shù)轉(zhuǎn)義的安全性原理分析

    這篇文章主要介紹了PHP中使用addslashes函數(shù)轉(zhuǎn)義的安全性原理分析,較為深入的分析了addslashes函數(shù)的用法及ecshop自定義函數(shù)addslashes_deep的不足之處,非常具有實用價值,需要的朋友可以參考下
    2014-11-11
  • PHP基于文件存儲實現(xiàn)緩存的方法

    PHP基于文件存儲實現(xiàn)緩存的方法

    這篇文章主要介紹了PHP基于文件存儲實現(xiàn)緩存的方法,實例分析了smarty模板中php通過文件存儲來實現(xiàn)緩存的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07

最新評論