使用计划的任务更新Coldfusion solr集合

马库斯·科亚(Marcus Coia)

因此,我对使用Coldfusion solr搜索(刚从CF8 Mac OS X服务器迁移到Linux CF9服务器)很陌生,并且我想知道处理自动更新集合的最佳方法是什么。我知道预定的任务是为此目的而设计的,但我无法在线找到任何示例。

我目前有一个计划任务,设置为每周更新所有集合,方法是获取集合列表,并在循环中使用cfindex标记来运行refresh命令。不过,这非常耗时,需要大约十分钟才能更新我到目前为止设置的四个集合。当我在浏览器中运行它时,此方法有效,但是当我从计划任务管理页面运行任务时,出现此错误“请求已超出允许的时间限制标签:CFLOOP”。

有更好的方法来处理更新的集合吗?如果我下达了单独更新每个集合的任务会更好吗?

这是我的更新代码。

<cfsetting requesttimeout="1800">

<cfcollection action="list" name="collections" engine="solr">

<cfloop query="collections">
    <cfindex collection="#name#" action="refresh" extensions=".pdf, .html, .htm, .cfml, .cfm" type="path" key="/home/#name#/public_html/" recurse="yes">
</cfloop>
塞缪尔·迪利

在ColdFusion的早期版本中,可以在任何HTTP请求上传递URL参数,以更改请求页面的服务器超时。您可能从计划的任务配置中猜测到有一个HTTP请求正在运行您的任务,因此它的功能与其他页面一样。在那些较早的版本中,您只需将其添加&requesttimeout=900到URL中,这样服务器就会有15分钟的时间来处理该任务。

在更高版本中,他们意识到此URL参数存在安全风险,但他们需要一种方法来允许开发人员声明单个HTTP请求应仍比在ColdFusion Administrator中设置的默认页面超时花费更长的时间。因此他们将其从URL参数移到了<cfsetting>标签。

 <cfsetting requesttimeout="900" />

您需要将cfsetting标记放置在页面的顶部,而不是将其放置在循环中,因为它是从请求开始重置总允许时间,而不仅仅是从最后一个cfsetting标记开始。本·纳德尔(Ben Nadel)在这里写了一篇关于此的博客文章:http : //www.bennadel.com/blog/626-CFSetting-RequestTimeout-Updates-Timeouts-It-Does-Not-Set-Them.htm

我不确定请求超时是否有上限。我确实知道,在过去,当我执行这样一个非常长时间的任务时,服务器逐渐变慢,在某些情况下直到崩溃为止。我不确定我是否期望重新索引Solr集合会严重降低性能,我认为我的任务正在做其他事情,这些事情可能会占用内存。无论如何,如果遇到该问题,您可能需要针对每个集合将其划分为单独的任务,只需确保任务之间有足够的时间来允许每个任务在下一个任务开始之前完成。

编辑:糟糕!我不知道如何cfsetting在最初的问题中错过标签。天哪!无论如何,当您通过CF Administrator执行计划的任务时,它将执行cfhttp执行任务请求。这是正常执行计划任务的方式,我怀疑是这样,因此任务可以在您自己的应用程序范围内执行,但结果是有两个单独的请求在执行。我不认为cfsettingCFIDE页面中标签,但是我怀疑一个人可以添加一个标签,如果他们想让该页面更长以等待任务完成。

编辑:好的,如果您想cfsetting在CFIDE中添加,则首先必须解密模板,然后添加一行代码...这可能会使服务器的保修失效,但可能并不危险。;)有关解密模板的信息,请参见:我可以获取被黑Coldfusion模板的来源吗?-并且要编辑的模板是/CFIDE/administrator/scheduler/scheduletasks.cfm

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用curl创建Solr集合

来自分类Dev

Solr集合-如何使用vi修改schema.xml

来自分类Dev

从集合中删除一些记录后,Apache Solr建议程序字典未更新

来自分类Dev

Solr-集合API超时

来自分类Dev

使用neo-cron.xml迁移ColdFusion计划的任务

来自分类Dev

使用Powershell 4.0更新计划的任务操作

来自分类Dev

Solr 加入多个集合,每个集合有多个分片

来自分类Dev

无法在Solr云上创建集合

来自分类Dev

Solr不会加载核心集合1

来自分类Dev

Solr不会加载核心集合1

来自分类Dev

在多台机器上扩展Solr集合

来自分类Dev

无法在Solr云上创建集合

来自分类Dev

单个 SOLR 实例中的多个集合

来自分类Dev

MarkLogic功能禁用计划任务

来自分类Dev

使用更新合并集合

来自分类Dev

在RxAndroid中使用计划

来自分类Dev

在设置大量计时器或使用计划的任务队列之间寻找解决方案

来自分类Dev

如何为使用计划任务而不提供服务的ECS集群设置自动扩展功能?

来自分类Dev

Sitecore使用计划任务从服务器删除文件

来自分类Dev

mongodb 使用计数在整个集合中聚合嵌套值

来自分类Dev

重命名集合与更新集合

来自分类Dev

使用SOLR更新文档

来自分类Dev

使用任务异步方法加载集合视图

来自分类Dev

ColdFusion 10计划任务无法暂停

来自分类Dev

现有的SOLR集合未获取Zookeeper模式更改

来自分类Dev

solr-以编程方式创建一个新集合

来自分类Dev

按子文档集合中的值对Solr响应进行排序

来自分类Dev

我如何告诉solr我的文档集合在哪里?

来自分类Dev

将数据发送到特定的Solr集合