Пользовательский обработчик сеансов в PHP

Каковы наилучшие методы для написания пользовательских обработчиков сеансов? Я прошел через большинство существующих фреймворков PHP, и большинство из них, похоже, имеют проблемы с параллелизмом и несколькими аякс-запросами при обработке обновлений идентификаторов сеансов. По умолчанию в PHP-сеансах используются блокировки файлов, чтобы управлять этим, но, похоже, нет подходящего способа сделать это, если я использую, скажем, MySQL для хранения сеансов. Какой был бы лучший способ решить эту проблему? Любая помощь оценивается.

2
nl ja de
Вы спрашиваете, можете ли вы имитировать блокировку в базе данных?
добавлено автор Salman A, источник

1 ответы

Если вы не заблокируете файлы сеанса/другую строку хранения, вы можете потерять данные.

Простой сценарий (при условии, что вы полностью отключили блокировку):

Исходное состояние: существует страница с двумя одновременными запусками ajax-запросов, каждая из которых добавляет еще один ключ к сеансу:

  1. Запрос отправлено
  2. Запрос B отправлен
  3. Сценарий A читает сеанс в памяти, он пуст
  4. Сценарий B считывает сеанс в память, он пуст
  5. Сценарий A добавляет ключ A к сеансу. Теперь он содержит один ключ A (в памяти)
  6. Сценарий B добавляет ключ B к сеансу. Теперь он содержит одну клавишу B (в памяти)
  7. Сценарий A сохраняет данные
  8. Сценарий B сохраняет данные

Результат: ключ потерян

Итак, если вы хотите гарантировать совместимость данных в сеансе, вам необходимо иметь некоторый механизм синхронизации. Это может быть, например, пессимистический замок, но тем не менее вы не можете полностью блокировать блокировку.

1
добавлено
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp