我正在寻找关于我正在构建的东西的建议:我有一个PHP应用程序,可以创建,更新和删除记录,但它紧密集成在一个传统的非基于SQL的数据库中,它真的很慢当你开始做很多数据库调用时。 我想为用户提供更多的后台体验,这样当用户创建或编辑某些内容时,需要将所有变量,数组和对象写入MySQL数据库,然后开始后台脚本来阅读这些内容。记录并将请求处理到旧数据库。
所以我需要一个跟踪任务的表,然后是另一个跟踪所有变量,对象,数组及其值的表。
以下是我认为第二个表的DB结构必须是:
以下是一些例子:
1 | NULL | NULL | NULL | NULL | 'foo' | 'bar'
1 | 'array' | 'foo_array' | NULL | 1 | 'foo' | 'bar'
1 | 'array' | 'foo_array' | NULL | 1 | 'foo2' | 'bar2'
1 | 'object' | 'foo_obj' | foobar_object | 2 | 'foo_method' | 'bar'
1 | 'object' | 'foo_obj' | foobar_object | 2 | 'bar_method' | 'foo'
这看起来像是一种过于复杂的方法吗?我是疯了还是在想这个?有人会想到一个更好的方法吗?
感谢。
答案 0 :(得分:3)
使用serialize()
它将生成一个特殊格式的字符串(您可以存储在您的数据库中)。该字符串是特殊的,unserialize()可以将其转换回其原始的php值。它维护变量类型,值和结构。自定义对象和多维数组都没有问题。
你仍然需要你的数据库表的一部分,这只是为你做了很多工作,而且做得很好。
答案 1 :(得分:1)
我会创建一个具有主键(或许是task_id)的表,然后创建一个列来存储变量的序列化哈希值(或者可能是json编码的)。您甚至可以将其存储在跟踪任务的原始表中。我假设该表的状态列的值为:
等待, 处理, 完成,和 错误
当我们在家里这样做时,我们只使用一个tinyint(1)无符号列。您还可以在创建,启动和完成任务时添加时间戳字段或三个。一旦你开始滚动,这一切都非常简单。