XQuery:在执行查询之前返回一些东西

时间:2015-06-30 15:35:19

标签: xquery exist-db

在我的Web应用程序中,整个搜索页面都是用XQuery编写的。查询不仅查找并显示结果,还将搜索项写入协议文件(在eXist数据库中,这可以使用file:serialize - 函数)。

但是,编写协议可能需要一些时间。当然,用户不应受此延迟的影响。因此,我想首先输出搜索结果,然后更新协议。

我已经尝试在返回内容之后放置协议功能,如:

return $search_results,localfunction:write_protocol()

(函数localfunction:write_protocol()始终返回空序列()。)

但这并不奏效。只有在$search_results完成后才会输出localfunction:write_protocol()的内容。

我能在这做什么吗? (我知道,在像PHP这样的更流程的语言中,这些问题也存在问题。)

2 个答案:

答案 0 :(得分:2)

我建议使用eXist中的Scheduler模块来安排XQuery任务来编写协议文件。调度程序模块提供了几个XQuery函数,您可以从主查询中使用它们来调度子任务;然后,这将与您的查询的其余部分异步完成。

答案 1 :(得分:0)

您是否可以将相关协议数据写入数据库中的集合,而不是编写外部文件?

然后,您可以使用XQuery Trigger处理该集合并将数据写入外部文件。

还可以使用util:log-app。

选择自定义日志文件