Это хорошая идея для доступа к таким данным?
blockquote>Я не вижу никакой выгоды, он просто добавляет много шаблонного.
Если позже вам понадобится какой-нибудь метод получения / установки, вы можете прозрачно добавить его, ничего не нарушая.
{ example: "test", } // can be turned into { get example() { /*..*/ }, set example(v) { /*...*/ }, }
Насколько я вижу, то же самое относится и к C #:
string example // can be turned to string example { get { //... } }
, поэтому я не уверен, о каких «лучших практиках» вы говорите.
... если вы что-то меняете в переменных a и b, вам не нужно менять весь код, который их использует.
blockquote>Но ... если эти свойства изменяются таким образом, что это влияет на их функциональность, код, использующий его, тоже должен быть изменен, использование getters / setters, чтобы «заставить его все еще работать как-то», не долго срок решения.
Нет никакой конфигурации тайм-аута в расчете на пользователя, но можно установить эти wait_timeout
значение динамично. Таким образом, после того, как Вы устанавливаете связь как данный пользователь, можно сделать заявление для изменения значения тайм-аута на то, чем Вы хотите, чтобы оно было для сессии того пользователя.
Попытка следующий эксперимент в mysql клиенте командной строки:
mysql> SHOW VARIABLES LIKE 'wait_timeout';
... шоу 28800 (т.е. 8 часов), который является значением по умолчанию wait_timout
.
mysql> SET SESSION wait_timeout = 60;
mysql> SHOW VARIABLES LIKE 'wait_timeout';
... шоу 60.
Затем можно выйти из сессии, снова соединиться, и снова значение по умолчанию wait_timeout
28800. Таким образом, это ограничено объемом текущей сессии.
можно также открыть второе окно и запустить отдельную mysql клиентскую сессию, чтобы доказать, что изменение wait_timeout
на одной сессии не влияет на другие параллельные сессии.
Я проверил mysql.user
таблица, и не похоже, что существует установка там для него:
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| File_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Create_user_priv | enum('N','Y') | NO | | N | |
| ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | |
| ssl_cipher | blob | NO | | | |
| x509_issuer | blob | NO | | | |
| x509_subject | blob | NO | | | |
| max_questions | int(11) unsigned | NO | | 0 | |
| max_updates | int(11) unsigned | NO | | 0 | |
| max_connections | int(11) unsigned | NO | | 0 | |
| max_user_connections | int(11) unsigned | NO | | 0 | |
+-----------------------+-----------------------------------+------+-----+---------+-------+
37 rows in set (0.00 sec)
В зависимости от того, используете ли Вы MySQLi или PDO, Ваши Подключения mysql PHP должны или зависнуть, когда запрос делает, или быть совместно использованным в пуле для процесса Apache.
, Например, с PDO, для выключения постоянных соединений (я думаю, что это - значение по умолчанию), подключение к DB с:
$pdo = новый PDO ($dsn, $user, $pass, Массив (PDO:: ATTR_PERSISTENT => ложь));
, Если Вы хотите, чтобы Ваши сценарии использовали постоянные соединения, но у Вас есть слишком много соединений, открытых для Вашей базы данных в режиме ожидания, необходимо думать о конфигурировании Apache MaxServers
, MaxSpareServers
, MinSpareServers
и StartServers
так, чтобы не так многие бродили вокруг, когда они не необходимы.
Другая возможность: MySQL поддерживает две различных переменные тайм-аута, wait_timeout
для неинтерактивных клиентов, и interactive_timeout
для интерактивных клиентов.
различие между интерактивными и неинтерактивными клиентами, кажется, просто, указали ли Вы CLIENT_INTERACTIVE
опция при соединении.
я не знаю, помогает ли это Вам, потому что необходимо так или иначе сделать mysql_real_connect()
передача что опция в client_flag
параметр. Я не уверен, какой язык или интерфейс Вы используете, таким образом, я не знаю, разрешает ли он Вам указывать этот флаг соединения.
Так или иначе, если можно передать тот клиентский флаг, и Вам только нужны два различных типов пользователей, затем Вы могли настроить wait_timeout
и interactive_timeout
по-другому в конфигурации сервера MySQL и затем использовать ту с более коротким значением, когда Вы хотите, чтобы данная сессия испытала таймаут быстро.