Как сделать, чтобы на каждом запросе к бек-енду не приходилось заново коннектиться к MySQL?
Можно ли сконнектиться только 1 раз в начале сессии и дисконнектиться при ее завершении?
То есть:
1) сделал юзер первый запрос к сайту (открыл страницу в браузере) - мы создали объект $mysqli
2) после этого юзер может делать и AJAX запросы с этой страницы, и не AJAX, и новые страницы открывать, и мы все равно используем тот же $mysqli
3) а как только юзер закрывает все вкладки, мы закрываем и $mysqli
Возможно ли что-то хоть отдаленно похожее?
Ну или хотя бы чтоб при каждом запросе к одному и тому же php-скрипту не коннектиться по новой, а то получается каждый раз когда один и тот же юзер постит в чате, мы заново коннектимся, дисконектимся...
В таком случае, можете спокойно забить. Даже если вы и добьётесь какого-то прироста он будет незначительным и совершенно несоразмерим с потраченными усилиями. Хотите скорости - выбирайте для задач подходящие инструменты (nodejs для чатов, например).
Традиционными средствами на php это сделать невозможно, скрипты умирают после завершения, а вместе с ними и все подключения.
Можно написать демона и обращаться к нему через сокеты или что-нибудь ещё.
Хотя, корректнее, конечно, сказать, что сессия - это хранилище текстовых данных, поскольку сессии можно хранить и в базе, например. Но вот чего точно нельзя сделать, так это "записать в сессию переменную".
В отличие от расширения mysql, в mysqli нет отдельной функции для создания постоянных соединений. Чтобы открыть постоянное соединение, при создании подключения к имени хоста нужно добавить префикс p:.