Timer Sitecore:在哪里插入自定义一次性功能?

Timer Sitecore:在哪里插入自定义一次性功能?,timer,sitecore,Timer,Sitecore,我的任务是定期以编程方式将项目添加到我们的Sitecore数据库中,但我几乎没有使用它的经验。通过使用在线资源,我成功地找到了如何以编程方式创建新项并将其添加到数据库中,在验证了该项不存在之后,但不知道如何将代码添加到解决方案中 我最初的想法是简单地启动一个计时器,并在每个间隔过后从Tick事件处理程序异步运行代码,但我需要在代码中只命中一次的位置设置计时器。我想Sitecore也可能有更好的方法来实现这一点 因此,如果有人能为我指出正确的代码放置方向,并告诉我是否有更好的解决方案来定期执行操作

我的任务是定期以编程方式将项目添加到我们的Sitecore数据库中,但我几乎没有使用它的经验。通过使用在线资源,我成功地找到了如何以编程方式创建新项并将其添加到数据库中,在验证了该项不存在之后,但不知道如何将代码添加到解决方案中

我最初的想法是简单地启动一个计时器,并在每个间隔过后从Tick事件处理程序异步运行代码,但我需要在代码中只命中一次的位置设置计时器。我想Sitecore也可能有更好的方法来实现这一点


因此,如果有人能为我指出正确的代码放置方向,并告诉我是否有更好的解决方案来定期执行操作,我将不胜感激。

对于此类任务,您需要Sitecore计划任务。 您可以在此处找到有关如何创建的详细信息:

我还推荐了这个模块:


对于此类任务,您需要Sitecore计划任务。 您可以在此处找到有关如何创建的详细信息:

我还推荐了这个模块:


有几种方法可以实现定期运行的任务。根据您的需求和Sitecore提供的服务,您应该选择最适合自己的服务。我在过去使用过以下任务。您可以阅读Sitecore攀登者提供的更多详细信息。最好的是约翰·韦斯特的帖子

数据库嵌入式任务计划任务-为此,您需要在/sitecore/system/tasks/Schedules下创建一个计划项,并在/sitecore/system/tasks/Commands下创建一个命令项。该命令用于指定类并放入自定义逻辑。我喜欢这种方法,因为我可以告诉开始日期、结束日期、一周中的哪几天以及运行的时间间隔。此外,如果您看到任何问题或不再需要它,则可以相对轻松地打开或关闭此功能。打开或关闭不会导致应用程序池回收。这里的好处是,计划项包含一个“Last Run”字段,您可以使用该字段作为参数,告诉代码从“Last Run”日期值开始修改项目。作为备份,我总是写一个页面并将其放在CM中的/sitecore/admin文件夹中,该文件夹具有参数控件以及手动运行该页面的日期,以防我的服务器出现故障,我需要手动运行该页面。这件事没有确切的时间安排,虽然你可以接近。 Sitecore代理—在这里,您可以编写一个页面,然后在Sitecore配置文件部分将其指定为URL。这是相对简单的,因为您编写了一个页面,将其放在/Sitecore/admin文件夹中,只需调用URL即可。我认为该部分处理查询字符串参数的方式可能存在一些问题。您可以指定一个时间间隔,以便在指定URL的同一位置运行此操作。这同样不是精确的时间,所以它永远不会在精确的时间运行,而是从应用程序池启动时开始以固定的间隔运行。您还必须在这里实现自己存储“上次运行”时间的方法。打开或关闭此选项需要更改配置文件,以便在此处进行应用程序池回收。 Windows任务-对于需要精确计时的情况,这是最佳选择。您可能需要为此编写一个web服务。此外,您还需要编写自己的“上次运行”时逻辑。打开或关闭此选项很容易,只需进入Windows任务控制台并禁用即可。 对于前两个选项,您需要确保频率元素和代理类型=Sitecore.Tasks.DatabaseAgent method=运行间隔=00:10:00 name=Master\u Database\u代理补丁:source=Sitecore.Processing.config元素的时间间隔小于您将创建的计划。这在约翰·韦斯特的博客《Sitecore攀登者的答案》中有介绍


我希望这会有所帮助。

有几种方法可以实现定期运行的任务。根据您的需求和Sitecore提供的服务,您应该选择最适合自己的服务。我在过去使用过以下任务。您可以阅读Sitecore攀登者提供的更多详细信息。最好的是约翰·韦斯特的帖子

数据库嵌入式任务计划任务-为此,您需要在/sitecore/system/tasks/Schedules下创建一个计划项,并在/sitecore/system/tasks/Commands下创建一个命令项。该命令用于指定类并放入自定义逻辑。我喜欢这种方法,因为我可以告诉开始日期、结束日期、一周中的哪几天以及运行的时间间隔。此外,如果您看到任何问题或不再需要它,则可以相对轻松地打开或关闭此功能。打开或关闭不会导致应用程序池回收。这里的好处是,Schedule项包含一个Last Run(最后一次运行)字段,您可以使用它作为参数,告诉代码获取它 ms自“上次运行”日期值以来已修改。作为备份,我总是写一个页面并将其放在CM中的/sitecore/admin文件夹中,该文件夹具有参数控件以及手动运行该页面的日期,以防我的服务器出现故障,我需要手动运行该页面。这件事没有确切的时间安排,虽然你可以接近。 Sitecore代理—在这里,您可以编写一个页面,然后在Sitecore配置文件部分将其指定为URL。这是相对简单的,因为您编写了一个页面,将其放在/Sitecore/admin文件夹中,只需调用URL即可。我认为该部分处理查询字符串参数的方式可能存在一些问题。您可以指定一个时间间隔,以便在指定URL的同一位置运行此操作。这同样不是精确的时间,所以它永远不会在精确的时间运行,而是从应用程序池启动时开始以固定的间隔运行。您还必须在这里实现自己存储“上次运行”时间的方法。打开或关闭此选项需要更改配置文件,以便在此处进行应用程序池回收。 Windows任务-对于需要精确计时的情况,这是最佳选择。您可能需要为此编写一个web服务。此外,您还需要编写自己的“上次运行”时逻辑。打开或关闭此选项很容易,只需进入Windows任务控制台并禁用即可。 对于前两个选项,您需要确保频率元素和代理类型=Sitecore.Tasks.DatabaseAgent method=运行间隔=00:10:00 name=Master\u Database\u代理补丁:source=Sitecore.Processing.config元素的时间间隔小于您将创建的计划。这在约翰·韦斯特的博客《Sitecore攀登者的答案》中有介绍


我希望这能有所帮助。

谢谢您的快速回复。不幸的是,我不能将两个答案都设置为正确的,@Gabbar的答案更具信息性。感谢您的快速回复。不幸的是,我无法将两个答案都设置为正确,并且@Gabbar的答案更具信息性。感谢您对备选选项的有用描述。感谢您对备选选项的有用描述。