在Kentico(9)当我运行任务的“删除非活动的联系人”它从来没有真正运行,结果总是“改期删除在明年非高峰期更多的接触”
我试图改变设置为每周运行一次,我已经尝试创建一个自定义IDeleteContacts然后将其设置为使用自定义类,但我总是得到相同的结果。
有任何想法吗?
默认情况下,Kentico运行它计划在常规的网络请求的尾部任务。那很好,如果你有交通24/7。如果不这样做,那么你可以遇到各种各样nastyness的,包括你现在的描述,因为计划任务不执行的问题。
如果你在Windows服务器,你可以设置一个service to trigger scheduled tasks上运行。如果这不是一个选项,您可以设置监控打你的网站每隔几分钟,例如UptimeRobot或Application Insights。每当站点关闭你会得到被通知增加的奖金。
如果你真的需要清理EMS接触,因为它是失控的,可以直接访问数据库,并触发该计划的任务使用相同的存储过程。这就是所谓的[Proc_OM_Contact_MassDelete]
,并采取了where子句和批量大小。 where子句中可指定删除政策。例如
ContactCreated < GETDATE()-60 AND ([ContactEmail] IS NULL PR [ContactEmail]='')
有了这个WHERE子句的存储过程将处理超过60天前创建的,并没有一个电子邮件地址尚未接触。
请注意,大量的EMS数据都需要数据库索引优化,此过程的一段可接受的时间内运行。当你的网站有流量,像样的数目。这是EMS一般真实。
如果标准Kentico清理不工作,例如因为数据库无法处理数以百万计的接触,我们已经写了一个脚本来purge all EMS data。请小心使用;)
你有你的项目应用了最新的修补程序(9.0.50)?有一个错误在不活动时接触的删除时间超过1分钟,计划任务没有设置“删除非活动的联系人”的下一次运行,任务也没再执行。您可以直接从该页面下载包:https://devnet.kentico.com/download/hotfixes
“删除不活动的联系人”计划任务仅根据该网站上运行的服务器时间凌晨2点至早上6点之间运行。你可以see this in the documentation。它永远只能删除了一批1000个联系人,绝不多。如果你想“招”的网站进入运行计划任务多,更新服务器上的时间上午01时58,并重新启动该网站。