Задать вопрос
  • Proxmox не использует всю ОЗУ?

    @Anywake Автор вопроса
    rPman, это вопрос конечно, до такого не доводил. Как то дошло до того что VM у меня упала, виидмо OOM Killer сработал, но это было давно. Сейчас я запустил ВМ ки на 115 гб ОЗУ, завтра расскажу что вышло.
  • Proxmox не использует всю ОЗУ?

    @Anywake Автор вопроса
    rPman, да, доступная память есть, но своп уже кончился.
  • Proxmox не использует всю ОЗУ?

    @Anywake Автор вопроса
    Он так же равен 10.

    Я прекрасно понмиаю что это не означает, меня больше волнует 99% загрузка свопа в 8 GB при наличии свободной ОЗУ в 25GB по мнению 'free'

    Другими словами free показывает мне availabe в 25 гб, небольшой кеш, но swap загружен на 8гб.

    Цифры примерные. Если есть желание я могу симулировать проблему.
  • Подключние к базе данных из класса - насколько правильно?

    @Anywake Автор вопроса
    Vitsliputsli, нужно! Как учится то ) Спасибо за ответы.
    Что все таки лучше? Сделать один класс или на каждый коннект свой? Мне "подсказывается" что на каждый свой.

    nokimaro, нагуглил дает такой овтет:

    С PDO::ATTR_EMULATE_PREPARES в значении true за обработку подготовленных выражений отвечает сам PDO. В базу данных передаётся чистый запрос с уже подставленными и корректно экранированными данными (только в dsn не забывайте правильно charset указывать).
    PDO::ATTR_EMULATE_PREPARES в значении false именно использует штатный механизм СУБД для подготовки запроса и затем отдельным обращением передаёт данные для этого запроса. Т.е. нормальные, реальные подготовленные выражения.

    Из не очевидных моментов:
    для сложных запросов дико удобно использовать именованные параметры несколько раз. Какой-нибудь where user_from = :id or user_to = :id и передать только один id. Такое возможно только с эмуляцией запросов.
    специфика конкретных СУБД. Какие-то СУБД из тех, что умеет PDO могут не уметь подготовленные выражения. Например, очень популярный PgBouncer (пул коннектов для PostgreSQL) не умеет обрабатывать подготовленные выражения. С эмуляцией выражений можно в коде проекта пользоваться удобствами API с prepare
    вопрос с тем, что подготовленный запрос разбирается и строит план один раз и затем только выполняется - на самом деле гораздо сложнее. Тот же mysql сохраняет запрос только в рамках соединения. Поэтому в типичном сценарии использования "подготовил, выполнил, закрыл соединение" никаких плюсов реальное препарирование не даёт. А кэширование плана между соединениями - по-моему (сам с этой СУБД не работал), есть в Oracle и приносит некоторое количество головной боли, ведь оптимальный план запроса в немалой степени зависит от самих данных.
    Написано
  • Подключние к базе данных из класса - насколько правильно?

    @Anywake Автор вопроса
    Vitsliputsli, много классных неизвестных мне слов, но очень интерсно)

    Сделаю один класс DB

    в него запихну все мне нужные базы (они в той или иной степени перекликаются) для вызова в других классах и у меня будет единый конфиг
    //класс DB будут
    public static function getInstance_db_line ()
    public static function getInstance_db_line2 ()


    вызовы будт такими при необходимости из одного класса дергаю нужные мне базы
    public function __construct($param1, $param2)
        {
             // Получаем PDO напрямую 
            $this->db_line = DB::getInstance_db_line();
      $this->db_line2 = DB::getInstance_db_line2 ();
        }


    или лучше для каждой базы (коннекта) сделать свой класс из за "Single Responsibility Principle"?

    Типа db_line , db_line2 и что то подобное?

    Практически, базы могу перекликаться в одном классе (один хост), я бы наверное так сделал и получилось бы

    public function __construct($param1, $param2)
        {
             // Получаем PDO напрямую с класса db_line подключения к базе LINE
            $this->db_line = DbLine::getInstance();
         // Получаем PDO напрямую с класса db_line2 подключения к базе LINE2
         $this->db_line2= DbLine2::getInstance();
    // Получаем PDO напрямую с класса db_work подключения к базе work 
    $this->db_work = DbWork::getInstance();
    //и так далее
        }
    Написано
  • Подключние к базе данных из класса - насколько правильно?

    @Anywake Автор вопроса
    Ипатьев, ну нет там названии базы и номеров злодеев, вырезал. Это пример.
    Написано
  • Подключние к базе данных из класса - насколько правильно?

    @Anywake Автор вопроса
    Vitsliputsli, можно пример на throw $sql_connect_e;?

    ЗЫ мне обычно звонят и пальцем тычут или скриншот по почте шлют)
    Написано
  • Подключние к базе данных из класса - насколько правильно?

    @Anywake Автор вопроса
    nokimaro, спасибо за ответ. Попробую ваш вариант.

    Нет там ни какой обротки отказа подключения к БД, нет коннекта - die(); Не нужна она там там. Отсутствует коннект к какой либо базе, нужен полный останов. Ненужно там "ой, потеряли связь бла бла бла" )
    Написано
  • Подключние к базе данных из класса - насколько правильно?

    @Anywake Автор вопроса
    Ипатьев, есть логика. Пользователю важно сообщить мне что тот или иной db отвалился. Там прям в коде написано кому звонить. Пользователю ненужно мне сообщать, что переменная не определена или еще какой NULL не критичный баг и прочее. Вот и вся логика. Если там вдруг вылез какой либо 500, мне и так сообщат. Но снашать меня по всякой NULL не надо :)
    Написано
  • Подключние к базе данных из класса - насколько правильно?

    @Anywake Автор вопроса
    Ипатьев, пользователю важно сообщить мне что тот или иной db отвалился. Пользователю ненужно мне сообщать что переменная не определена или еще какой не критиный баг. Вот и вся логика.
    Написано
  • Подключние к базе данных из класса - насколько правильно?

    @Anywake Автор вопроса
    Ипатьев,
    то в чём смысл отключать

    что бы не светить всякими ошибками отсутствия переменных и прочим... Пусть валят в лог. Там и беру.

    эти усы с двух сторон

    Красиво же) Просто не знал.

    а это здесь при чём?

    автоматический вызов классов, нет? Пошлите в ман правильный. Я классы не инклудю, их подгружает такой код:
    spl_autoload_register(function ($classname) {
    require_once (WWW_DIR ."/classes/". strtolower($classname) .".class.php");
    });
    Написано
  • Подключние к базе данных из класса - насколько правильно?

    @Anywake Автор вопроса
    Ммм... РНР не выводит, а там видно. ERROR REPORTING у меня как раз отключен. Мои ресурсы сугубо локальные, поэтому меня это не очень волнует. Но вот это нужно показывать. Есть нюанс в том, что у меня несколько баз в колхозе и пользователю мне нужно показывать кто упал и почему упал.

    "нелепые кавычечьки" не нелепые, так проще воспринимать мне, но я обязательно попробую, спасибо.

    spl_autoload_register рабоает очень хорошо ;)

    Спасибо за ваше мнение, пока больше склоняюсь к варианту передавать через конструктор и именно по тем же соображениям. Но хотелось глянуть другие варианты развития событий.
    Написано