4

几个月前,我在一家公司开始了 Web 开发人员的工作,负责管理一堆 Coldfusion 应用程序等。显然,一个计划任务是多年前设置的,并且运行良好,直到几年前它停止在以前的一位 Web 开发人员手下工作。没有人知道它为什么停止工作,但现在我的工作是修复它。这是我作为 Web 开发人员的第一份工作,当我开始工作时我并不知道 CF(几乎不知道它的存在),而且我今天早上才开始学习计划任务,所以只知道我是一个完全的新手。

该文件是一个基本文件——它只是更新数据库中的一个表。如果您在浏览器中运行 URL(这是他们过去几年一直在做的事情),它运行良好,并且所有内容都会更新。设置为每晚运行的计划任务尚未更新文件。我尝试在 CF Admin 中打开日志,将其设置为在今天早上的不同时间运行,也只是告诉它手动运行,根据日志,它正在执行(没有错误),但文件是没有被更新。我尝试注释掉大部分文件,只是告诉它发送一封基本的电子邮件,没有变量或任何东西,但我得到了相同的结果。

有任何想法吗?我不知道从这里尝试什么。我尝试在网上寻找解决方案,但我发现与我的情况类似的唯一帖子是这样的,人们似乎在暗示问题可能是调度程序无法使用的变量:

Coldfusion计划任务不发送电子邮件

不过,我的页面上现在没有变量。根据该页面上的建议,我尝试通过 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,请提交它作为答案,以便我选择它。你是我的英雄!

4

1 回答 1

4

(来自评论)

远射,但您的计划任务是否位于Application.cfm/Application.cfc文件所涵盖的目录中?询问的原因是父Application.cfm文件中的代码在您的 .cfm 脚本之前首先执行。Application.cfm 文件中是否有任何代码中止请求或重定向(例如权限检查)?

于 2012-12-03T22:14:56.423 回答