在调度程序中运行时,Coldfusion 9会话变量错误

时间:2013-12-10 14:48:38

标签: session coldfusion coldfusion-9 cfzip

我有一个流程,当我手动运行它时,它运行正常,没有错误。我让它在CF管理员调度程序中设置为每天凌晨3点运行。它每次都在同一行运行和出错。它已经在过去一周内完成了这项工作。
错误:SESSION中未定义元素DATEE。包含或处理的特定文件序列为:C:\ data \ wwwroot \ webapps \ cfeis \ commonapp \ sftp \ newpdfs.cfm,line:45
我知道这个会话变量存在,besauce之前使用了几行,并且它在那里工作正常。

 <!---Loops through selected folder. If .zip found, extracts all files into same folder--->
<cftry>
  <cfdirectory action="list" directory="#dropfolder#\#session.datee#" name="listRoot">
  <cfloop query="listRoot">
  <!---<cfif #listroot.name# contains ".zip">--->
    <cfif #listroot.name# contains ".zip" and #listroot.name# contains "Writing">
      <cfset session.foldname=#left(listroot.name, len(listroot.name)-4)#>
      <cfif not DirectoryExists("#dropfolder#\#session.datee#\#session.foldname#")>
        <cfset DirectoryCreate("#dropfolder#\#session.datee#\#session.foldname#")>
      </cfif>
      <cftry>
        <cfzip action="unzip" destination="#dropfolder#\#session.datee#\#session.foldname#" file="#dropfolder#\#session.datee#\#listRoot.name#" overwrite="yes" recurse="yes">
        <cfcatch>
          <cfsavecontent variable= "mailmessage">
            <cfoutput>
              #cfcatch.message#
            </cfoutput>
          </cfsavecontent>
          <cfmail from="eis-distributed-apps@lists.gatech.edu" to="lauren.robinson@oit.gatech.edu" subject="Unzip error" type="html">
            <cfmailpart type="text/html" charset="utf-8">#mailmessage#</cfmailpart>
            <cfmailpart type="text/plain" charset="utf-8">#textMessage(mailmessage)#</cfmailpart>
          </cfmail>
        </cfcatch>
      </cftry>
    </cfif>
  </cfloop>
  <cfcatch>
  </cfcatch>
</cftry>

<cfset session.funzip=0>
<cfset session.funzipArr=ArrayNew(1)>
<cfset sleep(10000)>
<cfdirectory action="list" directory="#dropfolder#\#session.datee#\#session.foldname#" name="listRoot">

它出错的行是上面代码中显示的最后一行。如您所见,相同的变量在代码中使用了3-4次。 有人能帮助我理解可能导致这种情况的原因吗?

1 个答案:

答案 0 :(得分:4)

会话和计划任务通常无法一起使用。会话通常用作登录过程的一部分。没有用户登录计划任务。

如果这是您的完整代码,则可以将session.*替换为request.*