Как правильно реализовать пользовательский стойкий организм сессии в MySQL PHP +?

Используйте параметр командной строки -XX:MaxPermSize=128m для JVM Sun (очевидно, заменяющий 128 для любого размера, в котором Вы нуждаетесь).

10
задан Community 23 May 2017 в 12:16
поделиться

2 ответа

Я просто хотел добавить (и вы, возможно, уже знаете), что хранилище сеансов PHP по умолчанию (которое использует файлы) блокирует файлы сеансов. Очевидно, что использование файлов для сеансов имеет множество недостатков, и, вероятно, поэтому вы ищете решение для базы данных.

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

Проверьте с помощью mysql_affected_rows (), была ли получена блокировка. Если получилось - приступайте. Если нет - повторяйте операцию каждые 0,5 секунды. Если в течение 40 секунд блокировка все еще не получена, генерируйте исключение.

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

Рекомендация

Если у вас кластерная среда, я настоятельно рекомендую memcached . Он поддерживает отношения сервер / клиент, поэтому все кластерные экземпляры могут подчиняться серверу memcached. У него нет проблем с блокировкой, которых вы боитесь, и он работает достаточно быстро. Цитата с их страницы:

Независимо от того, какую базу данных вы используете (MS-SQL, Oracle, Postgres, MySQL-InnoDB и т. Д.), Реализация свойств ACID в СУБД требует больших затрат, особенно когда задействованы диски. , что означает, что запросы будут заблокированы. Для баз данных, не совместимых с ACID (например, MySQL-MyISAM), таких накладных расходов не существует, но потоки чтения блокируются в потоках записи. memcached никогда не блокируется.

В противном случае, если вы все еще придерживаетесь хранилища сеансов РСУБД (и беспокоитесь, что блокировка станет проблемой), вы можете попробовать какой-то сегмент на основе липкого идентификатора сеанса (хватаясь за соломинки здесь.

0
ответ дан 4 December 2019 в 04:01
поделиться
Другие вопросы по тегам:

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