如何设置“临时mysql会话”系统

时间:2011-01-24 23:23:00

标签: php mysql restore

我想建立“促销(演示)网站”

如果用户关闭网络浏览器,我想撤消用户所做的更改

我不能使用BEGIN,ROLLBACK

<?
mysql_connect("localhost", "root", "");
mysql_select_db("db");

mysql_query("BEGIN");

mysql_query("UPDATE settings SET theme_color = 'blue' WHERE id = '1'");

//mysql_query("ROLLBACK");
//mysql_query("COMMIT");

$sorgu = mysql_query("SELECT * FROM settings WHERE id = '1'");
?>

因为不适用其他页面。

如果我想进行更改,那么SQL还有很长的路要走。

我能为此做些什么

修改

eq表

主题设置20-30集

产品和设置50-100集

multi_langs:)

4 个答案:

答案 0 :(得分:0)

您需要注册用户执行的操作,如果他们最终没有确认其工作单位,请使用它来恢复以前的数据库状态。一个非常复杂且可能不可靠的事情。

不幸的是,来自同一用户的每个新请求都将使用新的MySQL连接(即使是持久连接,也会启动一个新的MySQL会话),所以(我认为使用MySQL的内部机制无法做到这一点。


如果这是一个网站,对于访问该网站的每个用户来说,它应该显示为“新网站”,也许您可​​以为每个新用户创建一个新数据库并使用默认数据提供该数据库。然后,当他们的会话到期时,删除数据库。

答案 1 :(得分:0)

BEGINROLLBACK对您的情况无济于事。 尝试通过cron job恢复数据库,例如每30分钟一次。

困难的方法 - 为每个用户创建环境,比如为每个用户会话创建新数据库......但这显然是个坏主意:)

答案 2 :(得分:0)

您应该按会话/用户ID键入所有设置。

当新用户登录时,您将创建一组新的首选项,并使用默认值填充它们。

用户可以随意更改内容。当他们注销时,您将删除与该用户关联的首选项行。

这也解决了并发访问的问题。网站需要同时处理多个用户。因此,如果您允许用户修改网站的外观,则只需要影响网站,而不是网站上的所有其他用户。

答案 3 :(得分:0)

另一种解决方案是临时表而不是数据库。许多框架为我们提供了一个pre-tablename配置。在引导时,您可以识别一个演示登录,以便在该网站的该部分中为该用户提供演示表(基于使用特殊模型,因此所有模型类的基本模型类必须找到演示情况并具有特殊表根据子模型类中定义的内容命名。例如,如果用户开始访问CMS部分,则将在持久性DEMO数据库中为用户创建一些CMS部分演示表。接下来,我们将定期删除过期的数据表。