Задать вопрос
  • Как увеличить размер диска в proxmox?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Раздел со свопом удалите и никогда так больше в 21 веке не делайте. Тогда получится скукожить все разделы в один.
    Ответ написан
    Комментировать
  • Как выбирается маршрут в сети?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Алгоритм простой. Сначала из всех имеющихся маршрутов, подсеть которых включает узел назначения, выбирается самый "узкий". Если таковых несколько, выбирается тот, у которого минимальна метрика. Именно в шлюз этого маршрута и отправляется пакет.
    Тип интерфейса при этом не имеет вовсе никакого значения.
    Ответ написан
    2 комментария
  • Почему падают интерфейсы на микротик после бекапов proxmox?

    b1ora
    @b1ora Куратор тега MikroTik
    Контакты в профиле
    Потому что свитч чип на rb3011 не рассчитан на такую нагрузку. Подключай через коммутатор.
    Маршрутизатор должнен маршрутизировать
    Коммутатор коммутировать
    Ответ написан
    Комментировать
  • Подключние к базе данных из класса - насколько правильно?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    С ответами выше полностью согласен, DI через конструктор, авто-резолв зависимостей, возможно даже сервис контейнер с биндингами - это правильно, явное лучше не явного и тд.

    Но я предлагаю не мучаться, а просто сделать singleton-обертку над PDO
    И вызывать её там где нужно нафигачить запросы к БД

    class DB
    <?php
    class DB
    {
        private static $instance = null;
        private $pdo;
    
        private function __construct()
        {
            $host = 'localhost';
            $dbname = 'your_database';
            $username = 'your_username';
            $password = 'your_password';
            $charset = 'utf8mb4';
    
            $dsn = "mysql:host=$host;dbname=$dbname;charset=$charset";
            $options = [
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
            ];
    
            $this->pdo = new PDO($dsn, $username, $password, $options);
        }
    
        public static function getInstance()
        {
            if (self::$instance === null) {
                self::$instance = new self();
            }
            return self::$instance->pdo;
        }
    
        private function __clone() {}
        private function __wakeup() {}
    }


    class Data 
    {
        public function __construct($param1, $param2)
        {
             // Получаем PDO напрямую
            $this->db = DB::getInstance();
        }
    
        public function example()
        {
            // $query = $this->db->query("SELECT * FROM table");
            // $query->execute();
    
            // $stmt = $this->db->prepare("...");
        }
    }


    Вариант пробросить PDO через конструктор всё ещё останется, если поймете что оно вам нужно
    А так просто получаем глобальный доступ к инстансу PDO из любого места в коде
    Ответ написан
  • Полноценная Убунта поверх WSL?

    forajump
    @forajump
    Бессистемный дезинтегратор
    Нет, не полноценная. В WSL недоступно ядро (или по крайней мере не все его интерфейсы), исходно нет доступа к аппаратному обеспечению (USB, беспроводные сети; хотя поддержку USB с бубном прикрутить можно, Wi-Fi не пробовал), доступ к графическому процессору осуществляется отлично от Linux, как следствие не будут работать большинство графических настольных приложений, некоторое серверное ПО, в целом совместимость с ПО для Linux далеко не полная. Нет нативной поддержки systemd (можно включить).
    Это не Linux, а лишь среда запуска файловой системы Linux и командной оболочки (bash), сам разработчик заявляет ее именно так. Хороший инструмент для обучения и экспериментов, среда для системного администратора.
    Также по небольшому опыту эксплуатации довольно часты проблемы взаимодействия с Windows: при установке, запуске, удалении случаются ошибки и прочие нестыковки, например:
    • сообщения о неизвестных ключах в файле .wslconfig, когда ядро уже обновилось автоматически вместе с Windows, а дистрибутив еще старый;
    • Wsl/Service/CreateInstance/E_FAIL;
    • CreateProcessParseCommon:: Failed to translate C:\path\folder.


    В виртуальной машине такого не случается, и совместимость гораздо лучше, но WSL быстрее разворачивается и проще управляется.
    Ответ написан
    2 комментария
  • Подключние к базе данных из класса - насколько правильно?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    меня есть подключение к базе данных

    и уже неправильное

    Учим основы:
    - на локальном сервере это вот try catch echo является бессмысленным: если убрать всю эту нелепую копипасту, РНР и сам выведет то же самое.
    - на боевом сервере этот код является вредным: внутренние ошибки РНР мы никогда не светим наружу. Пользователь их не поймёт, а для хакера они бесценны.
    Поэтому убираем бессмысленное try catch и оставляем только соединение
    $sql_connect = new PDO("mysql:host=". DB_HOST .";dbname=". DB_NAME. ";charset=utf8mb4", DB_USER, DB_PASS, $pdo_options);

    Опять же убрав из него нелепые кавычечьки.

    насколько правильный такой подход

    Этот подход практически идеальный

    Можно изменить подход так, что бы не использовать конструктор

    Можно, но не нужно.
    Сейчас всё чётко видно, откуда берётся соединение с БД, и где оно нужно. Одна переменная в конструкторе - это не то место, где надо лениться и изобретать способы её не писать. В будущем, когда освоите автоматический вызов классов - тогда оно будет подставляться само. Но всё равно через конструктор.
    Ответ написан
  • Почему не запускается session_start() на сервере от REG.RU?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Настраивайте в PHP логирование всех ошибок (даже незначительных) в лог-файлы, а потом смотрите сами лог-файлы, исправляйте причины ошибок.
    И причину отсутствия session_start() там-же увидите, однозначно!
    Ответ написан
    Комментировать