За последние 24 часа нас посетили 59232 программиста и 1840 роботов. Сейчас ищет 871 программист ...

Разве плохо что я храню ресурсы запросов в св-вах?

Тема в разделе "Прочие вопросы по PHP", создана пользователем Mr.M.I.T., 21 сен 2008.

  1. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Храню ресурсы запросов и гет переменные в св-вах,
    а мне говорят что это плохо 0о
    но что-то я не пойму чем..?
    PHP:
    1. <?
    2. ...........
    3.  public static $result,$error;
    4.    private $db,$sql_img,$sql_file,$mn,$fn,$imgall,$fileall;
    5.    function __construct() {
    6.         include "sis/inc/replace_inc.php";
    7.         $this->db=locator::get()->db();
    8.         $this->mn=filter($_GET['mn'],'0-9');
    9.         $this->fn=filter($_GET['fn'],'0-9');
    10.         $mn=($this->mn-1)*$_SESSION['img_page'];
    11.         if ($mn<0)$mn=0;
    12.         $fn=($this->fn-1)*$_SESSION['file_page'];
    13.         if ($fn<0)$fn=0;
    14.         $_SESSION['img_sorter']=!$_SESSION['img_sorter']?"data DESC":$_SESSION['img_sorter'];
    15.         $_SESSION['file_sorter']=!$_SESSION['file_sorter']?"data DESC":$_SESSION['file_sorter'];
    16.         $_SESSION['img_page']=!$_SESSION['img_page']?25:$_SESSION['img_page'];
    17.         $_SESSION['file_page']=!$_SESSION['file_page']?25:$_SESSION['file_page'];
    18.         $this->sql_img=$this->db->query("SELECT * FROM {$this->db->perf}_imgs ORDER BY {$_SESSION['img_sorter']} LIMIT $mn,{$_SESSION['img_page']}");
    19.         $this->sql_file=$this->db->query("SELECT * FROM {$this->db->perf}_files ORDER BY {$_SESSION['file_sorter']} LIMIT $fn,{$_SESSION['file_page']}");
    20.         $this->imgall=$this->db->result($this->db->query("SELECT COUNT(*) FROM {$this->db->perf}_imgs "));
    21.         $this->fileall=$this->db->result($this->db->query("SELECT COUNT(*) FROM {$this->db->perf}_files"));
    22.         if (!$this->userrequest()){
    23.             $this->result=$this->tpl();
    24.         }
    25.    }
    26. ...................
    27. .......................
    28. ?>
     
  2. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    Какой страшный код :(
     
  3. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    нормальный код =\
     
  4. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    вопрос, почему хранить ресурсы запросов в свойствах класса плохо???
    не ужели лучше их лучше как параметры передавать? 0о
    или отдельные методы возвращающие запрос писать? о0
    самое разумное видицо в хранении в св-вах, тем более на производительность это вроде никак не влияет...?
     
  5. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    да ну вас :)
    Всё равно переделывать ничего не буду :p
     
  6. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    По сути - без разницы. Всё равно память используется. Но я бы покрайней мере сделал бы пару методов отдельных, которые бы немного разгрузили эту кашку :)

    По сути, почему лучше подгружать данные там где надо? Потому что конструктор выполняется куда раньше чем данные могут реально быть использованы. Может на данной странице вообще не выведутся картинки, а данные с базы ты тянешь. Уже плохо.

    Include в конструкторе - имхо некрасиво. Если он нужен 100% - require в верху файла и всё. Кешер опкода классно закеширует и будет хорошо работать.
     
  7. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    а в том то и дело что эти данные 100% будут дальше использоваться правдо, одни в tpl() другие в userrequest()..

    поэтому на счёт методов , ну ведь их всё равно придётся в конструкторе вызывать...
    и вообще тут данных то =)
    4 запроса, установка сессий в дефаулт если надо, получений номера страницы...

    на счёт инклуда, действительно, надо вынести =)
     
  8. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Чем хорошо то, что данные выбрал, вывел и уничтожил - аппликация не занимает много памяти в конкретный момент. Т.е. она всё равно перелопатит такое же кол-во данных, но пиковое использование оперативной памяти будет куда меньше, следовательно общее использование памяти на сервере будет ниже, из-за чего может отпасть необходимость добавить ещё 2 гига оперативки в сервер :)
     
  9. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    тогда будет много запросов, а это всё же хуже...
     
  10. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    запросов то же кол-во будет.
     
  11. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    нипонял :)
     
  12. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    Mr.M.I.T.

    ну, то ты сразу данные выбираешь - пусть 4 запроса.
    а то ты будешь выбирать данные последовательно, когда они нужны. те же 4 запроса. но, если не забывать удалять ненужное, в памяти на запрос будет не 4 результата одновременно лежать, а только 1=)
     
  13. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    DarkElf
    труъ
     
  14. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    опс, ступил =)