【发布时间】:2012-11-21 05:33:53
【问题描述】:
几个月前,我开始在一家公司担任 Web 开发人员,负责管理大量 Coldfusion 应用程序等。显然,一个计划任务是多年前设置的,并且运行良好,直到几年前它停止在以前的一位 Web 开发人员手下工作。没有人知道它为什么停止工作,但现在我的工作是修复它。这是我作为 Web 开发人员的第一份工作,当我开始工作时我并不知道 CF(几乎不知道它的存在),而且我今天早上才开始学习计划任务,所以只知道我是一个完全的新手。
该文件是一个基本文件——它只是更新数据库中的一个表。如果您在浏览器中运行 URL(这是他们过去几年一直在做的事情),它运行良好,并且所有内容都会更新。设置为每晚运行的计划任务尚未更新文件。我尝试在 CF Admin 中打开日志,将其设置为在今天早上的不同时间运行,也只是告诉它手动运行,根据日志,它正在执行(没有错误),但文件是没有被更新。我尝试注释掉大部分文件并告诉它发送一个基本的电子邮件,没有变量或任何东西,但我得到了相同的结果。
有什么想法吗?我不知道从这里尝试什么。我尝试在网上寻找解决方案,但我发现的唯一一篇与我的情况类似的帖子是这样的,人们似乎在暗示问题可能是调度程序无法使用的变量:
coldfusion scheduled task not sending emails
我的页面上现在没有变量。根据该页面上的建议,我尝试通过 CFSCHEDULE 运行任务,但得到的结果与以前相同。其他一些建议(服务器监视器/FusionReactor/cflog)我只是不知道该怎么做,所以我没有尝试过。
编辑:现在,这是页面中唯一没有被注释掉的代码:
<cfmail
to="[e-mail address]"
from="[e-mail address]"
Subject="is it running at all?">
Is it running?
</cfmail>
编辑 2:好的,现在我在电子邮件代码之前和之后都有类似的内容:
<cflog
text = "before e-mail"
application = "yes"
log = "Scheduler"
type = "information">
如果我实际访问文件的 URL(并且电子邮件也已发送),我会看到日志消息,但如果我告诉它从 CF 管理员运行计划任务,则不会。因为我在浏览器中打开文件时会发送电子邮件,所以我认为不是邮件服务器的问题。
编辑 3:是的,电子邮件地址是普通的硬编码字符串。 不过,我不确定 Application.cfm 文件“覆盖”是什么意思。在站点的顶层有一个 Application.cfm 文件,但不在这个特定的子目录中。有许多应用程序范围变量,但没有一个像现在一样在文件中使用。
编辑 4:感谢您的解释。正如我所说,就 CF 而言,总共 n00b,所以我很感激帮助。此应用程序的 Application.cfm 页面检查您是否已登录,如果未登录,则将您重定向到登录页面。会不会是这个问题?
编辑 5:耶!这似乎是问题所在。谢谢你,谢谢你,谢谢你! Leigh,请提交它作为答案,以便我选择它。你是我的英雄!
【问题讨论】:
-
你能把代码贴在你的页面上吗?
-
如果计划任务确实在运行(将您自己的cflog 放在它调用以确认的模板的开头和结尾),那么如果没有看到代码,我们将无能为力。跨度>
-
您确认不是邮件服务器的问题吗?
-
确认一下,真正的
[e-mail address]是一个普通的硬编码字符串(不是变量)?另外,远射,但您的计划任务是否在 Application.cfm/Application.cfc 文件覆盖的目录中? -
那么听起来你的脚本被“覆盖”了(即是父应用程序的一部分)。询问的原因是父Application.cfm文件中的代码首先执行before i> 你的 .cfm 脚本。 Application.cfm 文件中是否有任何代码中止请求或重定向(例如权限检查)?
标签: coldfusion scheduled-tasks