如何阻止网站访问者触发cron任务?


12

我的网站日志显示,如果有人访问该网站,则会触发cron。这减慢了第一次访问的加载时间。

将cron配置为每3小时运行一次:管理>配置»系统»Cron

我如何运行计划的cron,而不是由访问者触发的?

Answers:


9

您应该首先阅读有关cronDrupal手册页,以获取要运行的背景和命令。

  • 如果您具有对(Linux)服务器的shell / SSH访问权限,则可以运行use run crontab -u www-data -e编辑Web用户的cron表。您应该能够使用上面的链接中的详细信息来随意设置适当的cron运行。
  • 如果您在没有外壳访问权限的共享主机上,则需要使用Web主机的控制面板(CPanel,Plesk等)登录并添加“计划任务”。这提供了cron选项卡的Web界面,因此需要相同的设置。
  • 如果这些服务不可用,则需要请您的托管公司提供帮助,但是您还可以使用免费和付费的服务来cron.php远程呼叫该页面。例如,请参阅设置Cron作业

如果您总体上希望不使用cron,则看起来像Elysia Cron模块 -它具有良好的文档说明,可让您精细地控制何时执行任务。

最后,请记住,当您设法进行设置时,请在访问者到达管理»配置»系统»Cron时禁用运行它的站点。


我有外壳访问权限。我知道如何建立Cron工作。所以我会解决的。但是,感谢您总结所有信息。
cateye 2011年

但是我不明白的是,为什么Drupal表现得像现在这样。如果计划将基本配置每3个小时运行一次cron,为什么还要等待访问者呢?
cateye 2011年

1
考虑此事。对于Drupal来说,没有引导就无法运行cron作业,这是当然的。当访客访问该站点时,就会发生引导。因此,摘要为:如果您想要真正计划的cron作业,则必须在服务器端进行设置。
cateye 2011年

2
究竟。没有人或东西运行,服务器上什么也不会发生。Drupal 7的默认设置是在用户偶尔到达时运行cron,以确保关键任务得以运行。Drupal 6在缺乏适当的Cron工作的情况下依赖于Poor Man's Cron模块来执行此操作……并且Drupal中的几乎所有东西都需要首先进行引导。在服务器上正确执行cron作业无疑是最佳选择。
Jim Kirkpatrick

1
下面的答案描述了如何修复它。没有这一条:(
托马什Fejfar

13

Drupal 7在其模块中整合了Poormanscron中的代码,该代码的目的是在无法设置cron任务的网站上,用户访问您的网站时以及每X个小时(在您看到的页面)。

如果要避免这种行为,只需将“ Run cron every”设置为“ Never”;与看起来相反的是,这只会影响用户访问您的网站时发生的情况。[1]您仍然可以从Drupal外部运行Drupal cron任务,请记住,在Drupal 7中需要从Drupal外部调用cron.php,并传递“管理>报告>状态报告”中显示的值。

 

屏幕截图

 

 

 

 

 

[1]:实际上,cron.phpdrupal_cron_run()都不检查该设置页面中使用的Drupal变量。唯一使用的Drupal变量是:

  • 包含cron密钥的“ cron_key”用于避免未经授权的用户运行Drupal cron任务
  • TRUE站点处于维护模式时设置的“ maintenance_mode”
  • “ cron_last”,包含上次运行cron任务的时间戳

唯一的困难是,每次您查看该页面时cron作业都超时,而您甚至无法以管理员身份登录以禁用它!叹息 ...我会弄清楚的,但是很高兴知道,一旦我真正进入那里,它就可以被禁用

是的,我通过设置一个Montastic正常运行时间监视器(每6小时“检查” cron激活URL)来快速解决了这一问题
Anders
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.