Не может передать mysqli соединение на сессии в php

Я пытаюсь передать сессию с mysqli соединением для нескольких запросов на сайте, но когда я пытаюсь сделать запрос, это производит предупреждение, "Не мог выбрать mysqli"

$_SESSION['db']=new mysqli($host,$username,$password,$db);

Действительно ли невозможно передать mysqli ссылку соединения через сессию? существует ли другой метод для использования?

10
задан Gal 24 January 2010 в 00:46
поделиться

3 ответа

Да, явно невозможно.

Смотри Документация PHP здесь Упоминание в выделенном предупреждении: «Некоторые типы данных не могут быть сериализованы таким образом сохранены в сеансах. Он включает в себя переменные ресурса или объекты с круглыми ссылками (то есть объекты, которые проходят Ссылка на себя к другому объекту). «

MySQL-соединения являются одним из таких ресурсов.

Вы должны подключиться на каждой странице.

Это не так плохо, как звучит, если вы можете полагаться на объединение соединения через MySQL_PCONNECT () , но сначала увидеть больше фоновой информации на MySQL_PConnect () в . Эта статья .

16
ответ дан 3 December 2019 в 20:04
поделиться

Соединения базы данных являются ресурсами и не могут храниться на сеансе. Вам придется восстановить соединение на каждой странице или использовать постоянное соединение (PHP 5.3+).

2
ответ дан 3 December 2019 в 20:04
поделиться

Да - вы не можете пройти через сеанс. Ручка специфична для запроса. Вы можете поставить его в общий ресурс, такой как Memcache, и извлеките ручку, когда вам это нужно.

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

Всегда зависит от ваших потребностей, но да, я бы либо:

  • Создать новую ручку, когда вам это нужно / на запрос / (включить объединение соединения)
  • Приклейте DBHandle в Memcache
1
ответ дан 3 December 2019 в 20:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: