【发布时间】:2010-11-11 09:34:15
【问题描述】:
我希望更改我的应用程序以将 PHP 会话数据存储在 MySQL 中。该应用程序是 ajax 密集型的,但不使用长轮询或任何其他类型的持久连接。
我的问题是,在编写此代码时我需要注意哪些问题?例如;我有一个页面发送 4 个 ajax 请求来加载数据(对于另一个主题);如果我必须在每个请求上更新会话数据,这会导致任何锁定问题吗?
谢谢。
【问题讨论】:
我希望更改我的应用程序以将 PHP 会话数据存储在 MySQL 中。该应用程序是 ajax 密集型的,但不使用长轮询或任何其他类型的持久连接。
我的问题是,在编写此代码时我需要注意哪些问题?例如;我有一个页面发送 4 个 ajax 请求来加载数据(对于另一个主题);如果我必须在每个请求上更新会话数据,这会导致任何锁定问题吗?
谢谢。
【问题讨论】:
如果您同时向多个脚本发出 ajax 请求,可能会出现竞争条件。除非您使用回调,否则您无法验证它们是否会按照您分配 ajax 请求的顺序完成,这会证明相当慢。
只要您只是阅读就应该没问题,但如果您在发出多个请求时写入,则无法验证读取是否发生在最新数据上。
【讨论】:
如果速度是您最关心的问题,那么将会话数据存储在 Memcache 中会好得多。您不会有与在表中存储数据相关的数据库延迟——memcache 使用哈希键将数据存储在 RAM 中。这释放了您的关系数据库以执行实际的关系查询,并释放内存以缓存数据库的其他部分(对会话表的许多请求将填满用于缓存其他表的任何可用内存,否则将确信会话缓存是最重要的)。
当然,这是另一个需要学习和维护的依赖项和服务,但速度的提升是巨大的。
【讨论】: