Сабж. Хочу закэшировать линк базы данных так. Это может хоть как-то нарушить безопасность сайта? Или в линк ничего страшного подставить нельзя? PHP: function connect_db() { session_start(); if ($_SESSION['mfdb']) { return $_SESSION['mfdb']; } include($this->site_dir.'wp-config.php'); $db = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); if (mysqli_connect_errno()) { $this->error_tpl('Не удалось подключиться к базе данных', mysqli_connect_error()); die(); } if (!mysqli_set_charset($db, "utf8")) { $this->error_tpl('Ошибка базы данных', mysqli_error($db)); die(); } $_SESSION['mfdb'] = $db; return $db; }
Бесполезняк. Соединение разрывается при завершении работы скрипта. Блин, что за манера дописывать что-то к вордпрессу не через API вордпресса.... Не дай Бог такое на сопровождение попадётся...
@mkramer Болезнь новичков наверно.) У меня просто есть класс, в конструкторе которого идёт подключение к БД и он может вызываться несколько раз по ходу выполнения скрипта. Надо либо закэшировать как-то линк своего подключения, либо достать вордпрессовский - пока не могу нагуглить как.
Короче по-моему проще сделать через глобальную переменную. PHP: $db = 0; class Test { function testing() { global $db; if ($db) { echo 'defined!'; } $db = 1; } } $class = new Test(); $class->testing(); $class = new Test(); $class->testing();
и нафиг тебе класс нужен ? мало того что использование класса "ваще **здатое", дык еще и тупой глобал присунул, как хрен через пупок.
Есть ненулевая вероятность, что Вордпресс имеет на борту API для работы с БД и тебе нет нужды писать свое рядышком. Серьезно. Почитай документацию.
Интересно, как ты гуглишь... PHP: global $wpdb; Там уже есть все методы, не надо выискивать, где сам mysql/mysqli у wordpress-а. Потому что если завтра WordPress решит перейти на pdo, то твой скрипт упадёт. А если всё через $wpdb сделаешь, будет работать --- Добавлено --- https://wp-kama.ru/function/wpdb
Ну так, мне не методы надо, потому что вертел я Wordpress с его методами. Зачем учить PHP, чтобы потом ещё учить синтаксис Wordpress? Проще в своём конструкторе определить то что тебе нужно и писать привычный код, без вордпрессовских костылей. Ну, это лично моё мнение.
Вот как этот текст видят опытные разработчики: "Проще свои костыли натыкать, чем разбираться в отлаженном API для работы с БД у продукта, в который было человекочасов вложено больше, чем я живу на свете". О каком синтаксисе Wordpress идет речь? Вот тебе пример: PHP: $data = $wpdb->get_results( "SELECT * FROM table" ); На входе Mysql-запрос как аргумент функции, на выходе данные. Одна строчка. Лаконичнее не придумать. И так выглядят 95% подобных API. И твой бы так выглядел. Но ты даже не посмотрел, о чем речь, заочно сделав все выводы, основываясь не на чём. Зря. Не, похвально конечно, что ты свои костыли пишешь для работы с БД. Это очень полезно, когда с нуля что-то делаешь. Но когда работаешь с движком/фреймворком, у которого это уже реализовано, причем, скорее всего, лучше, чем ты бы сам сделал, смысл дублировать уже готовые методы? Смысл создавать себе проблемы, чтобы потом самому их решать, когда они уже решены заранее?
Тогда надо писать свой код полностью. Поскольку иначе игнор API вордпресса неизбежно приведёт к конфликтам. У вордпресса не костыль, а весьма неплохой класс работы с БД
подключение к бд обычно "кешируется" внутри php-расширения/плагина/библиотеки для работы с этой бд. Т.е. оно не закрывается сразу и переиспользуется.
ТС RTFM https://php.ru/manual/mysqli.persistconns.html https://php.ru/manual/features.persistent-connections.html Про сессии надо сказать, что в них невозможно сохранить не только соединение, но и любой объект из встроенных классов, потому что такие объекты не сериализуются.
Вот это полезная информация. Но звучит как ещё больший геморрой, чем то решение с глобальными переменными, что я выложил. Потому что: Объясняю как это происходит в мире обычных людей, а не в мире программистов, где всё идеально. Тебе нужен сайт, но у тебя нет денег. Ты начинаешь говнокодить что-то сам, а через пару лет, когда уже сайт готов и всё работает, то переделывать что-то по-человечески становится ппц лень. Проще сделать небольшой костыль на свой костыль и забыть про это.
Ды все уже сделано за тебя. Я ж выше привел пример. Если у тебя нет денег и времени, то зачем говнокодить то, что уже написано за тебя, учитывая, что ты используешь движок, в котором это написано? Зачем усложнять? Это все равно что в машину садиться со своим ремнем безопасности, прибивая его к салону гвоздями. Потому что родной слишком изучать долго - пряжку в крепление воткнуть это ж огого. Проще гвоздей побольше взять.
Ну, вот так самоучки начинают кодить.) Руль держать ты научился кое как, коробку переключать научился, педали нажимать тоже. На ремень сил не хватило. А потом стало пофиг, привык к гвоздям.
Нет, не так. Оправдывать быдлокодерство не надо. За всех говорить не надо. Прятаться за выдуманные чужие спины не надо. Ты разве не понимаешь, что тебе подсказывают, не чтобы поспорить, а чтобы ты стал лучше? Скажи честно, что не так в API работы с бд, которое я выше показал? Чем оно тебя не устраивает? Что в нем не понятно? Что сложно? Ты скажи, мы объясним.
Две ошибки с самого начала: соединение не надо кешировать и сессию ты зря считаешь кешем. А так-то, экспериментироть надо. Только с внятно обозначенной целью.