проблемма с fopen в class.

  • Автор темы tristram
  • Дата начала

tristram

Guest
проблемма с fopen в class.

Для своего движка и приложений я решил делать текстовые конфиги, ini-style я считаю очень тупым, т.к туда нельзя запихнуть массив или булеан стандартными средствами php. я решил юзать serialize() и забыть про траблы. задача была написать класс который автоматом загружает данные из файла, пишет в $class->db и при вызове $class->flush(); пишет $class->db обратно в файл, а также опционально поддерживает base64. скрипт я сделал, но я решил не останавливатся на конфигах, и сделать гвестбук на такой базе.
для этого обязательно требуется flock, и по-этому надо делать $class->fp где будет распологатся указатель файла, а фукции будут с ним работать.
:) у меня нифига не вышло.

вот версия без flock (там каждую операцию открывается файл и закрыватеся).

PHP:
class mydb_sdb
{
 var $db;
 function mydb_sdb($path,$nobase64) {$this->load($path,$nobase64);}
 function load($path,$nobase64) {$this->path = $path; if (empty($nobase64)) {$nobase64 = $this->nobase64;} $this->nobase64 = $nobase64; $this->path = $path; $fp = fopen($path,"r"); while ($read = fread($fp,1024)) {$data .= $read;} fclose($fp); if (!$this->nobase64) {$data = base64_decode($data);} $this->db = unserialize($data); unset($data); return $this->db;}
 function loaddata($data) {if (!$this->nobase64) {$data = base64_decode($data);} $this->db = unserialize($data); return $this->db;}
 function flush($path) {if (empty($path)) {$path = $this->path;} $fp = fopen($path,"w"); $data = $this->db; $data = serialize($data); if (!$this->nobase64) {$data = base64_encode($data);} fwrite($fp,$data); fclose($fp);}
}
 

tristram

Guest
ПОНЯЛЛ!!!!! Хлопаем в ладоши и кидаем розовые ленточки!!! :D
 

lucas

Guest
tristram

1. Не устраивай клоунаду в собственном топике.
Хочешь получить совет -- объясняй, как пытался сделать (+ пример кода на 5 строк) и как определил, что "нифига не вышло".

2.
туда нельзя запихнуть массив или булеан стандартными средствами php
Обоснуй.
 

Yuriy_S

-=PHP-Club=-
и отформатируй свой "код" что бы он был более читабельным.
 

tristram

Guest
:cool: давно ищу оптимизатор php. чтобы прога записала код как можно удобнее как для прочтения, так и для парсинга.
 

alpine

Новичок
tristram
Чувак тебе нужно читать:

http://tony2001.phpclub.net/standard/(rus)
http://php.com.ua/articles/?id=28(eng)

затем переписать свой код, исправленный и отформатированный, запостить в топик(только то что нужно), сказать: "не работает здесь, не пойму почему". А дальше будем разбираться ;)
ну а пока:
>> я решил юзать serialize()
кирпич на голову упал?
>> а также опционально поддерживает base64
а что права на файл выставлять можно, ты не знал?
>> и сделать гвестбук на такой базе
там у тебя тоже base64 опционально?
>> делать $class->fp где будет распологатся указатель файла
нафига ?!
 

Demiurg

Guest
>чтобы прога записала код как можно удобнее как для прочтения, так и для парсинга.
а теперь еще раз, для постоянных учасников форума, медленно и со смыслом.
 
tristram
Твой пхп код пользователи не видят - это не хтмл!..
И написав всю программу в одну строчку - только себе проблем наживешь...
Так что в твоем "парсинге" нет никакого смысла, да и хтмл прятать - тоже бессмысленно:
1. Кому нади и так разберет;
2. Никаких тайн там нет - если, конечно, ты там пароли ни хранишь?
-----
Кстати, у тебя в некоторых местах есть ненужные {}...
А как ты сам свой код редактируешь, скажем через пару недель?
 
Сверху