代码如下:
class CtbClass {
var $file;
var $index;
//建立一个文件并写入输入
function null_write($new)
{
$f=fopen($this->file,"w");
flock($f,LOCK_EX);
fputs($f,$new);
fclose($f);
}
// 添加数据记录到文件末端
function add_write($new) {
$f=fopen($this->file,"a");
flock($f,LOCK_EX);
fputs($f,$new);
fclose($f);
}
// 配合readfile()的返回一起使用,把一行数据转换为一维数组
function make_array($line) {
$array = explode()("\x0E",$line);
return $array;
}
//把为一维数组转换一行数据
function join_array($line) {
$array = join("\x0E",$line);
return $array;
}
// 返回数据文件的总行数
function getlines() {
$f=file($this->file);
return count($f);
}
// 返回下一行的数据记录(备用)
function next_line() {
$this->index=$this->index++;
return $this->get();
}
// 返回上一行的数据记录(备用)
function prev_line() {
$this->index=$this->index--;
return $this->get();
}
// 返回当前行的数据记录数据较小
function get() {
$f=fopen($this->file,"r");
flock($f,LOCK_SH);
for($i=0;$i<=$this->index;$i++) {
$rec=fgets($f,1024);
}
$line=explode("\x0E",$rec);
fclose($f);
return $line;
}
// 返回当前行的数据记录数据较大
function get_big_file() {
$f=fopen($this->file,"r");
flock($f,LOCK_SH);
for($i=0;$i<=$this->index;$i++) {
$rec=fgets($f,1024*5);
}
$line=explode("\x0E",$rec);
fclose($f);
return $line;
}
// 打开数据文件---以一维数组返回文件内容
function read_file() {
if (file_exists($this->file)) {
$line =file($this->file);
}
return $line;
}
// 打开数据文件---以二维数组返回文件内容
function openFile() {
if (file_exists($this->file)) {
$f =file($this->file);
$lines = array();
foreach ($f as $rawline) {
$tmpline = explode("\x0E",$rawline);
array_push($lines, $tmpline);
}
}
return $lines;
}
// 传入一个数组,合并成一行数据,重写整个文件
function overwrite($array){
$newline = implode("\x0E",$array);
$f = fopen($this->file,"w");
flock($f,LOCK_EX);
fputs($f,$newline);
fclose($f);
}
// 添加一行数据记录到文件末端
function add_line($array,$check_n=1) {
$s=implode("\x0E",$array);
$f=fopen($this->file,"a");
flock($f,LOCK_EX);
fputs($f,$s);
if ($check_n==1) fputs($f,"\n");
fclose($f);
}
// 插入一行数据记录到文件最前面
function insert_line($array) {
$newfile = implode("\x0E",$array);
$f = fopen($this->file,"r");
flock($f,LOCK_SH);
while ($line = fgets($f,1024)) {
$newfile .= $line;
}
fclose($f);
$f = fopen($this->file,"w");
flock($f,LOCK_EX);
fputs($f,$newfile);
fclose($f);
}
// 更新所有符合条件的数据记录,适用于每行字节数据较大的情况
function update($column,$query_string,$update_array) {
$update_string = implode("\x0E",$update_array);
$newfile = "";
$fc=file($this->file);
$f=fopen($this->file,"r");
flock($f,LOCK_SH);
for ($i=0;$i<count($fc);$i++) {
$list = explode("\x0E",$fc[$i]);
if ($list[$column] != $query_string) {
$newfile = $newfile.chop($fc[$i])."\n";
} else {
$newfile = $newfile.$update_string;
}
}
fclose($f);
$f=fopen($this->file,"w");
flock($f,LOCK_EX);
fputs($f,$newfile);
fclose($f);
}
// 更新所有符合条件的数据记录,适用于每行字节数据较小的情况
function update2($column,$query_string,$update_array) {
$newline = implode("\x0E",$update_array);
$newfile = "";
$f = fopen($this->file,"r");
flock($f,LOCK_SH);
while ($line = fgets($f,1024)) {
$tmpLine = explode("\x0E",$line);
if ($tmpLine[$column] == $query_string) {
$newfile .= $newline;
} else {
$newfile .= $line;
}
}
fclose($f);
$f = fopen($this->file,"w");
flock($f,LOCK_EX);
fputs($f,$newfile);
fclose($f);
}
// 删除所有符合条件的数据记录,适用于每行字节数据较大的情况
function delete($column,$query_string) {
$newfile = "";
$fc=file($this->file);
$f=fopen($this->file,"r");
flock($f,LOCK_SH);
for ($i=0;$i<count($fc);$i++) {
$list = explode("\x0E",$fc[$i]);
if ($list[$column] != $query_string) {
$newfile = $newfile.chop($fc[$i])."\n";
}
}
fclose($f);
$f=fopen($this->file,"w");
flock($f,LOCK_EX);
fputs($f,$newfile);
fclose($f);
}
// 删除所有符合条件的数据记录,适用于每行字节数据较小的情况
function delete2($column,$query_string){
$newfile = "";
$f = fopen($this->file,"r");
flock($f,LOCK_SH);
while ($line = fgets($f,1024)) {
$tmpLine = explode("\x0E",$line);
if ($tmpLine[$column] != $query_string) {
$newfile .= $line;
}
}
fclose($f);
$f = fopen($this->file,"w");
flock($f,LOCK_EX);
fputs($f,$newfile);
fclose($f);
}
//取得一个文件里某个字段的最大值
function get_max_value($column) {
$tlines = file($this->file);
for ($i=0;$i<=count($tlines);$i++) {
$line=explode("\x0E",$tlines[$i]);
$get_value[]=$line[$column];
}
$get_max_value = max($get_value);
return $get_max_value;
}
// 根据数据文件的某个字段是否包含$query_string进行查询,以二维数组返回所有符合条件的数据
function select($column, $query_string) {
$tline = $this->openfile();
$lines = array();
foreach ($tline as $line) {
if ($line[$column] == $query_string) {
array_push($lines, $line);
}
}
return $lines;
}
// 功能与function select()一样,速度可能略有提升
function select2($column, $query_string) {
if (file_exists($this->file)) {
$tline = $this->read_file();
foreach ($tline as $tmpLine) {
$line = $this->make_array($tmpLine);
if ($line[$column] == $query_string) {
$lines[]=$tmpLine;
}
}
}
return $lines;
}
// 根据数据文件的某个字段是否包含$query_string进行查询,以一维数组返回第一个符合条件的数据
function select_line($column, $query_string) {
$tline = $this->read_file();
foreach ($tline as $tmpLine) {
$line = $this->make_array($tmpLine);
if ($line[$column] == $query_string) {
return $line;
break;
}
}
}
// select next/prev line(next_prev ==> 1/next, 2/prev) by cx
function select_next_prev_line($column, $query_string, $next_prev) {
$tline = $this->read_file();
$line_key_end = count($tline) - 1;
$line_key = -1;
foreach ($tline as $tmpLine) {
$line_key++;
$line = $this->make_array($tmpLine);
if ($next_prev == 1) { // next?
if ($line[$column] == $query_string) {
if ($line_key == 0) {
return 0;
} else {
$line_key_up = $line_key - 1;
return $up_line;
}
} else {
$up_line = $line;
}
} elseif ($next_prev == 2) { // prev?
if ($line[$column] == $query_string) {
if ($line_key == $line_key_end) {
return 0;
} else {
$line_key_down = $line_key + 1;
break;
}
}
} else {
return 0;
}
}
$down_line = $this->make_array($tline[$line_key_down]);
return $down_line;
}
?>
您可能感兴趣的文章:
php文件操作类的代码一例
php文件操作的小例子
PHP文件操作方法问答
php中目录与文件操作详解
php目录与文件操作的实例教程
<?php
/* $cache = new Cache("../cache/",20); // 构造函数,创建缓存类对象
$cache->PutCache(); // 倒出缓存
*/
class Cache
{
private $CacheDir = ’Cache’; /* 缓存目录 */
private $SetTimeOut = 10; /* 缓存过期时间 */
private $SetExt = ’.cache’; /* 缓存文件后缀名 */
private $CacheFileUrl = ’’; /* 缓存文件所在地址 */
private $CacheConfigFile = ’’; /* 缓存文件配置信息 */
public $LastUnixTimePoke = 0; /* 上一次缓存的 Unix 时间戳 */
public $CurrentUnixTimePoke = 0;/* 当前缓存的 Unix 时间戳 */
public $NextUnixTimePoke = 0; /* 下一次缓存的 Unix 时间戳 */
public $UnixNowToNext = 0; /* 现在和下一次缓存相差的 Unix 时间戳 */
public $LastTimePoke = 0; /* 上一次缓存的时间 */
public $CurrentTimePoke = 0;/* 当前缓存的时间 */
public $NextTimePoke = 0; /* 下一次缓存的时间 */
public $DataLength = 0; /* 缓存区内容长度 */
public $CacheToPage = ’’; /* 缓存文件内容 */
private $SplitTeam = false; /* 是否分组存放Cache文件 */
public $Cache = false; /* 是否需要缓存,用户外界判断 */
private $_IsCache = false; /* 是否能够缓存 */
public function Cache($SetTimeOut = 20,$CacheDir = ’Cache’,$SplitTeam = false,$SetExt = ’.cache’)
{
$this->CacheDir = $CacheDir;
$this->SplitTeam = $SplitTeam;
if(!is_numeric($SetTimeOut))
{
$this->ErrResponse(’缓存过期时间设置无效’);
return false;
} else {
$this->SetTimeOut = $SetTimeOut;
}
$this->SetExt = $SetExt;
/* 缓存开始 */
ob_clean();
ob_start();
ob_implicit_flush(0);
$this->CreateCache();
return true;
}
private function CreateCache()
{
$_CacheFile = str_replace()(’.’,’_’,basename($_SERVER[’PHP_SELF’])) . ’_’ .
md5(basename($_SERVER[’PHP_SELF’])) . $this->SetExt;
$_CacheConfig = str_replace(’.’,’_’,basename($_SERVER[’PHP_SELF’])) . ’_’ . ’.cof’;
if(!file_exists($this->CacheDir))
{
mkdir($this->CacheDir,0777);
}
if($this->SplitTeam)
{
$_CacheConfigDir = $this->CacheDir . str_replace(’.’,’_’,basename($_SERVER[’PHP_SELF’])) . ’_/’;
if(!file_exists($_CacheConfigDir))
{
mkdir($_CacheConfigDir,0777);
}
$_CacheUrl = $this->CacheDir . $_CacheConfigDir . $_CacheFile;
$_CacheConfigUrl = $this->CacheDir . $_CacheConfigDir . $_CacheConfig;
} else {
$_CacheUrl = $this->CacheDir . $_CacheFile;
$_CacheConfigUrl = $this->CacheDir . $_CacheConfig;
}
if(!file_exists($_CacheUrl))
{
$hanld = @fopen($_CacheUrl,"w");
@fclose($hanld);
}
if(!file_exists($_CacheConfigUrl))
{
$hanld = @fopen($_CacheConfigUrl,"w");
@fclose($hanld);
}
$this->CacheConfigFile = $_CacheConfigUrl;
$this->CacheFileUrl = $_CacheUrl;
$this->CheckCache();
return true;
}
private function CheckCache()
{
$_FileEditTime = @filemtime($this->CacheFileUrl);
$_TimeOut = $this->SetTimeOut;
$_IsTimeOut = $_FileEditTime $_TimeOut;
$this->LastUnixTimePoke = $_FileEditTime;
$this->NextUnixTimePoke = $_IsTimeOut;
$this->CurrentUnixTimePoke = time();
$this->UnixNowToNext = $this->NextUnixTimePoke - time();
$this->LastTimePoke = date("Y-m-d H:i:s",$_FileEditTime);
$this->NextTimePoke = date("Y-m-d H:i:s",$_IsTimeOut);
$this->CurrentTimePoke = date("Y-m-d H:i:s",time());
$_TxtInformation = "上次缓存时间戳: $this->LastUnixTimePoke ";
$_TxtInformation .= "当前缓存时间戳: $this->CurrentUnixTimePoke ";
$_TxtInformation .= "下次缓存时间戳: $this->NextUnixTimePoke ";
$_TxtInformation .= "上次缓存时间: $this->LastTimePoke ";
$_TxtInformation .= "当前缓存时间: $this->CurrentTimePoke ";
$_TxtInformation .= "下次缓存时间: $this->NextTimePoke ";
$_TxtInformation .= "距离下次缓存戳: $this->UnixNowToNext ";
$handl = @fopen($this->CacheConfigFile,’w’);
if($handl)
{
@fwrite($handl,$_TxtInformation);
@fclose($handl);
}
if($_IsTimeOut >= time())
{
$this->GetCacheData();
}
}
private function ClearCacheFile()
{
@unlink($this->CacheFileUrl);
@unlink($this->CacheConfigFile);
}
public function PutCache()
{
$this->DataLength = ob_get_length();
$PutData = ob_get_contents();
if(!file_exists($this->CacheFileUrl))
{
$CreateOK = $this->CreateCache();
if(!$CreateOK)
{
$this->ErrResponse(’检查缓存文件时产生错误,缓存文件创建失败’);
return false;
}
} else {
$hanld = @fopen($this->CacheFileUrl,"w");
if($hanld)
{
if(@is_writable($this->CacheFileUrl))
{
@flock($hanld, LOCK_EX);
$_PutData = @fwrite($hanld,$PutData);
@flock($hanld, LOCK_UN);
if(!$_PutData)
{
$this->ErrResponse(’无法更改当前缓存文件内容’);
return false;
} else {
@fclose($hanld);
return true;
}
} else {
$this->ErrResponse(’缓存文件不可写’);
return false;
}
} else {
$this->ErrResponse(’打开缓存文件发生致命错误’);
return false;
}
}
}
public function GetCacheData()
{
$hanld = @fopen($this->CacheFileUrl,"r");
if($hanld)
{
if(@is_readable($this->CacheFileUrl))
{
$this->CacheToPage = @file_get_contents($this->CacheFileUrl);
$IsEmpty = count(file($this->CacheFileUrl)); //判断缓存文件是否为空
if($IsEmpty > 0)
{
echo $this->CacheToPage;
@fclose($hanld);
ob_end_flush();
exit();
}
} else {
$this->ErrResponse(’读取缓存文件内容失败’);
return false;
}
} else {
$this->ErrResponse(’打开缓存文件失败’);
return false;
}
}
private function ErrResponse($Msg)
{
echo $Msg;
}
}
?>
php使用函数方式输出XML文件的例子,有需要的朋友可以参考下。
<?php
$conn= new PDO("mysql:dbname=lamp;host=localhost","root","123456");
$sql="select id,username,phone,*** from user";
$pdo=$conn->prepare($sql);
$pdo->execute();
$str='<?xml version="1.0" encoding="utf-8" ?>';
$str.='<users>';
//如果内容中有HTML代码可以使用<![CDATA][ 内容 ]>
while(list($id,$username,$phone,$***)=$pdo->fetch(PDO::FETCH_NUM)){
$str.='<user id="'.$id.'">';
$str.='<username>'.$username.'</username>';
$str.='<phone>'.$phone.'</phone>';
$str.='<***>'.$***.'</***>';
$str.='</user>';
}
$str.='</users>';
file_put_contents("user.xml",$str);
header("Content-type:text/xml");
echo $str;
?>