我一直在与一个小团队合作一个关于虚构世界建设的小项目。我被分配了管理实体(岩石/地点/物品)的触发器/连锁行为的任务,这些实体可以通过多种方式触发,例如向湖中扔一块魔法石,怪物 X 会出现,并继续触发这些东西在链中,直到它到达终点。
我试过这个
$Trigger_123 = new stdClass();
$Trigger_123->name = "Name";
$Trigger_123->renderOn = ? // (object_345->throwedInLakeX) ?
如何将其存储在 MySQL 中?我可以检查它是否是链条部件吗?我也尝试了 MySQL 触发器,但我找不到在这些触发器上执行 PHP 的方法。例如,在更新或删除时运行 PHP 代码。
Cron 作业不是一个选项,因为将来会添加很多东西,而且 cron 作业需要很长时间才能完成,我希望找到一个更基于 php 的解决方案。
已编辑(添加一些附加信息)
我试图以多种方式实现这一点。我最终得到了一个非常类似于 debian 软件包的依赖系统,我认为它不适合这个。
数据库结构
Table "object"
--------------
ID (int)
Name (varchar)
Table "triggers"
----------------
ID (int)
Name (varchar)
Data (blob) // usually, I store php code and use eval to run
Table "attributes"
------------------
ID (int)
attribute (varchar)
value (blob)
Table "object_has_triggers"
---------------------------
ID (int)
ObjectID (int)
TriggerID (int)
Table "object_has_attributes"
-----------------------------
ID (int)
ObjectID (int)
AttributeID (int)
结果我想要的是每次都执行一个PHP代码片段
- 一个数据库事务,在提交之前和之后提交到数据库
- 附有 X 触发器的对象,解决它们
- 检查由 X 触发的每个 Trigger 是否满足其所有依赖项
问题: 这样的东西甚至可以用 PHP 构建还是我应该尝试其他脚本语言,如 python?