<?php
//! Write out serialized data.
// write_cache uses serialize() to store $var in $filename.
// $var - The variable to be written out.
// $filename - The name of the file to write to.
function write_cache(&$var, $filename) {
$filename = $filename;
$success = false;
// try to open the file
if ($fp = @fopen($filename, 'w')) {
// obtain a file lock to stop corruptions occuring
flock($fp, 2); // LOCK_EX
// write serialized data
fputs($fp, serialize($var));
// release the file lock
flock($fp, 3); // LOCK_UN
fclose($fp);
$success = true;
}
return $success;
}
//! Read in seralized data.
// read_cache reads the serialized data in $filename and
// fills $var using unserialize().
// $var - The variable to be filled.
// $filename - The name of the file to read.
function read_cache(&$var, $filename, $auto_expire = false){
$filename = $filename;
$success = false;
if (($auto_expire == true) && file_exists($filename)) {
$now = time();
$filetime = filemtime($filename);
$difference = $now - $filetime;
if ($difference >= $auto_expire) {
return false;
}
}
// try to open file
if ($fp = @fopen($filename, 'r')) {
// read in serialized data
$szdata = fread($fp, filesize($filename));
fclose($fp);
// unserialze the data
$var = unserialize($szdata);
$success = true;
}
return $success;
}
?>
示例:
<?php
read_cache($array,'cache.cache');
echo count($array);
$array = array();
$array[] = '1';
$array[] = '2';
$array[] = '3';
write_cache($array,'cache.cache');
?>