dodger778
Новичок
Здравствуйте!
Написал простой скрипт для записи информации в файл, но к сожаление в файл помимо моей информации записывается еще символы с кодом 0x000, причем чем чем больше раз сохранить информацию в файле тем больше этих самых символов и будет.
Скрипт простой и при каждом сохранении информация в файле очищается, данные я передаю по ссылке на переменную.
Код вызова скрипта:
Код скрипта:
Версия PHP Version 5.3.10. Ребят я могу дополнить вопрос только скажите что нужно. А то я уже с ума схожу от такой простой задачи и сложности ее решения.
Написал простой скрипт для записи информации в файл, но к сожаление в файл помимо моей информации записывается еще символы с кодом 0x000, причем чем чем больше раз сохранить информацию в файле тем больше этих самых символов и будет.
Скрипт простой и при каждом сохранении информация в файле очищается, данные я передаю по ссылке на переменную.
Код вызова скрипта:
PHP:
$data = array(1,2,3,4,5,6,7, "test"=>3); // то что нужно записать в файл
$cache = new cache2($data); // передаем то что нужно сохранить
$cache->save(); // сохраняем
$data = array('test'=>1,'test1'=>2); // Изменяем
$cache->save(); // Сохраняем снова
$cache->save(); // и еще
$cache->save(); // и еще раз
$cache->save(); // и опять
print_r($cache->read()); // читаем то что сохранили. Не читается:(
PHP:
class cache2{
var $path = "/srv/xxx_html/cache/";
var $data;
var $file;
var $key;
function __construct(array &$data=null){
if($data)
$this->data = &$data;
if(isset($_COOKIE['cache'])){
$this->key = $_COOKIE['cache'];
$this->path = $this->path.$this->key;
} else {
$this->generateKey();
}
$this->open();
}
function printCache(){
echo "<pre>";
print_r($this->data);
echo "</pre>";
}
function save(){
file_put_contents($this->path,"");
$data = json_encode($this->data);
fwrite($this->file, $data);
}
//Прочитать данные и
function read(){
if($size=fileSize($this->path)){
$data = fread($this->file, $size);
$data = json_decode($data, true);
return $data;
}
}
function delete(){}
//Генерировать имя файла
function generateKey(){
$time = time();
$key = $time.$_SERVER['REMOTE_ADDR'];
$this->key = $time."_".md5($key).".cache";
setcookie("cache", $this->key, $time+3600*24*365, $_SERVER['REQUEST_URI'], $_SERVER['HTTP_HOST']);
return $this->path = $this->path.$this->key;
}
//Создать файл
function createCacheFile(){
$this->file = fopen($this->path, "w+");
chmod($this->path, 0755);
}
//Открыть файл
function open(){
if(is_file($this->path))
$this->file = fopen($this->path, "r+");
else
$this->createCacheFile();
}
function __destruct(){
clearstatcache();
}
}