#php #mysql #mysqli
#php #mysql #mysqli
Вопрос:
Весь сайт использует следующую единственную инструкцию для вызова подключения к БД, понимая, что код включен во все остальные файлы php. Похоже, что он достигнет предела, потому что я проверяю, что сторона RDS имеет одно соединение для нескольких пользователей. Как я могу узнать максимальный предел потоков? или максимальный общий пул?
unset($db1);
$db1 = new MySQLi($db_url,$db_username,$db_password,$db_name,$db_port);
$db1->query("set names utf8");
Комментарии:
1. Почему вы включаете это в каждый файл? Почему бы не подключиться один раз и повторно использовать соединение? В чем причина?
2. Что вы имеете в виду под максимальным пределом потоков? PHP всегда выполняется в одном потоке. Нет пула соединений. Каждый раз, когда вы создаете новый объект, устанавливается новое соединение
3. Это было бы неинтересным открытием, потому что теоретический предел зависит от ОС сервера, а эффективный предел, безусловно, зависит от аппаратного обеспечения, конфигурации и пользовательских ограничений, и я также уверен, что сервер MySQL используется большим количеством приложений, чем ваше. Если вы пытаетесь решить конкретную проблему, вам, вероятно, следует спросить об этом.
4. @Ron потому что PHP закрывает соединение, когда выполнение завершено?
5. Для всего проекта PHP достаточно инициализировать новый,
$db1 = new mysqli(....)
а затем во ВСЕМ проекте повторно использовать это$db1
… нет необходимостиunset
в этом или повторно инициировать его снова и снова, прикрепляя его к любому новому файлу PHP, в котором вы быinclude
илиrequire
в database.php где вы КОГДА-ТО инициировали соединение…
Ответ №1:
Лучшим вариантом было бы изменить эти 3 параметра в вашей конфигурации.
mysql> help set names;
Name: 'SET NAMES'
Description:
Syntax:
SET NAMES {'charset_name'
[COLLATE 'collation_name'] | DEFAULT}
This statement sets the three session system variables
character_set_client, character_set_connection, and
character_set_results to the given character set. Setting
character_set_connection to charset_name also sets collation_connection
to the default collation for charset_name. See
https://dev.mysql.com/doc/refman/8.0/en/charset-connection.html.
The optional COLLATE clause may be used to specify a collation
explicitly. If given, the collation must one of the permitted
collations for charset_name.
charset_name and collation_name may be quoted or unquoted.
The default mapping can be restored by using a value of DEFAULT. The
default depends on the server configuration.
Some character sets cannot be used as the client character set.
Attempting to use them with SET NAMES produces an error. See
https://dev.mysql.com/doc/refman/8.0/en/charset-connection.html#charset
-connection-impermissible-client-charset.
URL: https://dev.mysql.com/doc/refman/8.0/en/set-names.html