sattaryekta
پنج شنبه 12 اسفند 1389, 11:02 صبح
برای بروز خطای کمتر، فایل را Lock می کند.
class OrdUpIO{
private $fp = null;
private $filename = null;
private $data = null;
function OrdupIO($filename){
if(file_exists($filename)){
$this->filename = $filename;
if($this->fp = fopen($this->filename,"r+")){
while(!flock($this->fp,LOCK_EX | LOCK_NB )){
$r = rand(5,50) * 1000;
usleep($r);
}
}
}
}
function GetLastModified(){
clearstatcache();
return filemtime($this->filename);
}
function get(){
if($this->fp){
if(!$this->data){
$this->data = stream_get_contents($this->fp);
}
return $this->data;
}
}
function put($data){
if($this->fp){
$this->data = $data;
ftruncate($this->fp,0);
if($this->data){
rewind($this->fp);
for ($written = 0; $written < strlen($this->data); $written += $fwrite) {
$fwrite = fwrite($this->fp, substr($this->data, $written));
if ($fwrite === false) {
break;
}
}
}
}
}
function close($save=true){
if($this->fp){
$this->data = null;
flock($this->fp, LOCK_UN);
fclose($this->fp);
}
}
}
class OrdUpIO{
private $fp = null;
private $filename = null;
private $data = null;
function OrdupIO($filename){
if(file_exists($filename)){
$this->filename = $filename;
if($this->fp = fopen($this->filename,"r+")){
while(!flock($this->fp,LOCK_EX | LOCK_NB )){
$r = rand(5,50) * 1000;
usleep($r);
}
}
}
}
function GetLastModified(){
clearstatcache();
return filemtime($this->filename);
}
function get(){
if($this->fp){
if(!$this->data){
$this->data = stream_get_contents($this->fp);
}
return $this->data;
}
}
function put($data){
if($this->fp){
$this->data = $data;
ftruncate($this->fp,0);
if($this->data){
rewind($this->fp);
for ($written = 0; $written < strlen($this->data); $written += $fwrite) {
$fwrite = fwrite($this->fp, substr($this->data, $written));
if ($fwrite === false) {
break;
}
}
}
}
}
function close($save=true){
if($this->fp){
$this->data = null;
flock($this->fp, LOCK_UN);
fclose($this->fp);
}
}
}