* filefifo.php 檔案型fifo佇列*/
classfilefifo
* $_file_data, 資料檔案的路徑*/
private $_file_data = '';/**
* $_file_idx, 索引檔案的路徑*/
private $_file_idx = '';/**
* $_file_idx_bak, 索引備份檔案的路徑, 防止意外斷電等導致索引檔案破壞*/
private $_file_idx_bak = '';/**
* $_f_data, 資料檔案的控制代碼*/
private $_f_data;/**
* $_f_idx, 索引檔案控制代碼*/
private $_f_idx;/**
* $_f_idx_bak, 索引備份檔案控制代碼*/
private $_f_idx_bak;private static $_instance = array();public static function instance($file)
return self::$_instance[$file];
}public function __construct($file)
public function__destruct()
.idx";$this->_file_idx_bak = ".idx.bak";if (! file_exists($file)) $idx_data_bak = '';/**
* 有備份則讀取備份資料,無備份則建立空備份檔案*/
if (file_exists($this->_file_idx_bak)) elseelse$this->_f_data = fopen($this->_file_data, 'a+b');$this->_f_idx = fopen($this->_file_idx, 'rw+b');$this->_f_idx_bak = fopen($this->_file_idx_bak, 'rw+b');
* detach, 分離當前佇列檔案*/
private functiondetach()
,");rewind($this->_f_idx_bak);ftruncate($this->_f_idx_bak, 0);fwrite($this->_f_idx_bak, ",");
}else$data_all[$line] = $data;
}flock($this->_f_idx,lock_un);$cur_pos = array('pos' => $pos,
'line' => $line,);return $data_all ? $data_all : false;
* push, 隊尾壓入多條記錄
* @param string | array $data, 字串資料,不能包含回車換行,否則會追加多條記錄
* @return int, 返回插入的記錄條數*/
public function push($data)
$count = 0;/**
* 鎖定資料檔案,追加記錄*/
flock($this->_f_data,lock_ex);if (is_array($data)) flock($this->_f_data,lock_un);return $count;
* del, 清空乙個佇列*/
public functiondel()
{$this->detach();unlink($this->_file_data);unlink($this->_file_idx);unlink($this->_file_idx_bak);return true;
winform 批量控制項取值賦值
以前寫winform 最多寫幾個文字框,最近需要入錄乙個人員資訊,那好幾十個字段,一下子幹蒙了,這要是乙個個取值賦值都寫到明天了,於是就自己寫了個方法,也不是什麼高大上的,就是很簡單很普通很low的方法。廢話少說上 注意,這塊我就用了個文字框,你也可以找到所有控制項,盡量控制項name與實體字段一樣...
linux 批量解壓gz bz2檔案
一 批量解壓bz2檔案 find maxdepth 1 name bz2 xargs i tar xvjf 這條命令可解壓當前目錄下的所有bz2檔案 批量解壓是比較鬱悶的事,以前嘗試各種方法,甚至用指令碼迴圈語句解壓都不行 現在發現這條命令可以搞定,maxdepth表示搜尋深度,1代表只搜尋當前目錄...
sqlldr批量匯入資料夾下多個csv檔案
建立表的時候要建立在一般使用者下,不要建立在sys和sysytem使用者下,否則sqlldr匯入時提示許可權不夠 批量匯入,可以通過獲取資料夾下所有檔案的絕對路徑實現 echo off setlocal enabledelayedexpansion for f delims i in dir a s...