Ich habe eine geplante Aufgabe, die einmal am Tag läuft und eine XML-Datei erstellt, die ich an eine andere Gruppe weitergebe. In letzter Zeit hat die Datenmenge stark zugenommen und führt nun dazu, dass die Aufgabe eine Zeitüberschreitung verursacht (glaube ich). Ich habe versucht, mein Skript so weit wie möglich zu optimieren, aber ohne Erfolg. Die Zeit läuft lange vor einer Stunde ab, und ich erhalte keine ColdFusion-Fehlermeldung. Stattdessen erhalte ich die Meldung "Diese Seite kann nicht gefunden werden", nachdem es ausgeführt wurde.
- Könnte es sich um eine Zeitüberschreitung an einem anderen Ort als Coldfusion handeln?
- Gibt es eine effizientere Methode zur Erstellung dieser XML-Datei?
Datei:
<cfsetting requesttimeout="7200">
<cftry>
<cfquery datasource="datasource" name="getPeople">
select PersonID, FirstName, LastName
from People
</cfquery>
<cfquery datasource="datasource" name="getDepartments">
select d.DepartmentID, DepartmentName, pd.PersonID
from Department d inner join PersonDepartment pd on d.DepartmentID = pd.DepartmentID
</cfquery>
<cfquery datasource="datasource" name="getPapers">
select PaperID, PaperTitle, PaperDescription, pp.PersonID
from Paper p inner join PersonPaper pp on p.PaperID = pp.PaperID
</cfquery>
<cfsavecontent variable="theXML"><?xml version="1.0" encoding="utf-8" ?><people>
<cfoutput query="getPeople"><cfsilent>
<cfquery dbtype="query" name="getPersonDepartments">
select DepartmentID, DepartmentName
from getDepartments
where PersonID = #getPeople.PersonID#
</cfquery>
<cfquery dbtype="query" name="getPersonPapers">
select PaperID, PaperDescription
from getpapers
where PersonID = #getPeople.PersonID#
</cfquery>
</cfsilent> <person>
<person_id>
#getPeople.PersonID#
</faculty_id>
<person_first_name>
#getPeople.Firstname#
</person_first_name>
<person_last_name>
#getPeople.LastName#
</person_last_name><cfif getPersonDepartments.recordcount gt 0>
<departments><cfloop query="getPersonDepartments">
<department>
<department_id>
#getPersonDepartments.DepartmentID#
</department_id>
<department_name>
#getPersonDepartments.DepartmentName#
</department_name>
</department></cfloop>
</departments></cfif><cfif getPersonPapers.recordcount gt 0>
<papers><cfloop query="getPersonPapers">
<paper>
<paper_id>
#getPersonPapers.PaperID#
</paper_id>
<paper_description>
#getPersonPapers.PaperDescription#
</paper_description>
</paper></cfloop>
</papers></cfif>
</person>
</cfoutput></faculty>
</cfsavecontent>
<!--- Generate the file that contains the RSS --->
<cffile action="write" file="#application.serverroot#/People.xml" output="#theXml#" nameconflict="overwrite">
<cfcatch>
<cfdump var="#cfcatch#">
</cfcatch>
</cftry>
Done!