【发布时间】:2014-09-01 05:59:02
【问题描述】:
我想在网页中使用 trac 数据(票务信息、状态等),因为数据检索非常慢(我解释这是因为我担心我的问题可能是 XY Problem),因此我将所有数据导出到数据库以便更快地访问。
现在的问题是,如果有人更新票证,那么我在数据库中有旧数据。 即使我定期更新我的数据库,那么在两次更新之间也可能有人更新了票证,并且有人可能在网站上请求了信息。
所以我想如果 trac 在每次创建新票证或修改票证后更新我的数据库会怎样。
所以我需要在某处放置一个 post 脚本,每次更新 trac 时都会执行该脚本并更新我的数据库。
如果不可能,那么如果可能的话,我愿意迁移到 Redmine。
更新 1
追踪版本:0.11.5
插件 : 不知道,它的公司记录,我在 GUI 中找不到任何东西
Java api :XML-RPC
耗时 :20-30 秒
更新 2
这是我的代码
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl ();
config.setBasicUserName ("harry");
config.setBasicPassword ("my_passwd");
config.setServerURL(new URL("https://host.domain.com/project/trac/login/xmlrpc"));
XmlRpcClient client = new XmlRpcClient();
client.setConfig (config);
TrackerDynamicProxy xmlRpcProxy = new TrackerDynamicProxy(client);
Ticket ticket = (Ticket)xmlRpcProxy.newInstance(Ticket.class);
Vector vector = ticket.query(); // gives all ticket number
for(Object obj : vector)
ticket.get((Integer)obj).get(3); // summary column
这样每张票几乎需要半秒,而且票很多,所以总共需要大约 20-30 秒。
【问题讨论】:
-
很高兴了解您遇到问题(响应时间长)的 Trac 安装。请至少包括 Trac 版本、已安装的 Trac 插件及其版本(如果有)以及 Trac db 后端类型。
-
虽然您可以通过实施ITicketChangeListener 来更新您的数据库以响应票证更改,但我建议您沿着@hasienda 推动您前进的道路前进,试图找出数据检索的原因减缓。 Trac 和您的其他网页是否都来自同一个网络服务器?或者它们是在同一个物理服务器上运行最少,还是在它们之间有快速连接的两个物理或虚拟服务器上运行?
-
另外你的 Trac 版本太旧了,我建议至少更新到 0.12.5,但最好是 1.0.1(0.12.6 和 1.0.2 很快就会发布)。
-
@RjOllos 我对这个版本无能为力,我只是公司的一名员工,但感谢 TON 的插件,真的在找这个!如果您可以发布类似的答案,可能会带有一个示例,我可以接受该解决方案并关闭此问题。
-
@RjOllos 我已经安装了插件,但是我应该在哪里编写代码,显示的示例是在 python 中,所以我应该把代码放在哪里??