Jeg går udfra, at årsagen til den lange eksekveringstid ligger 'på taget' - og at det ikke syldes eksorbitante mængder data.
Anyway, så har jeg lavet en løsning (håber, du bruger Windows), som downloader filen til din PC og gemmer en backup. Herefter forsøger den at uploade filen til din server.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "
http://www.w3.org/TR/html4/strict.dtd"><html>
<head>
<hta:application ID="oDataLogApp"
APPLICATIONNAME="Data Log Download"
VERSION="1.0"
CAPTION="yes"
BORDER="dialog"
INNERBORDER="no"
MAXIMIZEBUTTON="no"
SHOWINTASKBAR="yes"
SINGLEINSTANCE="yes"
WINDOWSTATE="normal"></hta:application>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=9">
<meta http-equiv="MSThemeCompatible" content="yes">
<title></title>
<script type="text/javascript">
window.resizeTo(600, 240);
window.moveTo((screen.availWidth-600)/2, (screen.availHeight-240)/2);
document.title = oDataLogApp.applicationName;
</script>
<style type="text/css">
html, body {
margin: 0;
padding: 0;
font: 12px "Segoe UI", Tahoma, sans-serif;
overflow: hidden;
background: #dedede;
}
* {
cursor: default;
}
fieldset {
margin: 12px 16px;
}
.controls {
padding-bottom: 10px;
}
p {
margin: 0;
text-align: center;
}
#statusDispl {
height: 7em;
margin: 12px;
padding: 5px;
border: 1px inset #fff;
background: #f0f0f0;
overflow: auto;
}
#statusDispl div {
white-space: nowrap;
}
.emph-text {
font-weight: bold;
}
</style>
<script type="text/javascript">
// Edit first three variables
var sFetchURL = "
http://www.google.dk/",
sUploadURL = "
http://localhost/save_log_file.php",
sBackUpFile = "myLogFile.dat",
// Stop edit
oXhr = elmBtn = null;
function downloadFile(btn) {
elmBtn = btn;
btn.disabled = true;
writeStatus("");
writeStatus("Preparing to call: '"+sFetchURL+"'");
oXhr = new XMLHttpRequest();
oXhr.open("GET", sFetchURL+"?u="+new Date().getTime(), true);
oXhr.onreadystatechange = function() {
switch (this.readyState) {
case 2:
writeStatus("Download request sent.");
break;
case 3:
writeStatus("Recieving data.");
break;
case 4:
if (sBackUpFile) writeFile();
if (sUploadURL) uploadFile();
else oXhr = null;
break;
}
}
oXhr.send(null);
}
function writeFile() {
var oStrm = new ActiveXObject("ADODB.Stream"),
oStrmOut = new ActiveXObject("ADODB.Stream");
oStrm.type = 2;
oStrm.mode = 3;
oStrm.charset = "utf-8";
oStrm.open();
oStrm.writeText(oXhr.responseText);
oStrm.position = 3;
oStrmOut.type = 1;
oStrmOut.mode = 3;
oStrmOut.open();
oStrm.copyTo(oStrmOut);
oStrmOut.saveToFile(sBackUpFile, 2);
oStrm.flush();
oStrm.close();
oStrmOut.flush();
oStrmOut.close();
oFso = oStrmOut = oStrm = null;
writeStatus("Logfile saved as: '"+sBackUpFile+"'", true);
elmBtn.disabled = false;
}
function uploadFile() {
var sQuery = "context=saveLog&logData="+encodeURIComponent(oXhr.responseText);
writeStatus("Preparing to call: '"+sUploadURL+"'");
oXhr = new XMLHttpRequest();
oXhr.open("POST", sUploadURL, true);
oXhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
oXhr.onreadystatechange = function() {
switch (this.readyState) {
case 2:
writeStatus("Upload request sent.");
break;
case 3:
writeStatus("Recieving result.");
break;
case 4:
finishUpload();
break;
}
}
oXhr.send(sQuery);
}
function finishUpload() {
try {
var oResp = JSON.parse(oXhr.responseText);
}
catch(e) {
return writeStatus("Fejl: "+e.message, true);
}
if (oResp.error) writeStatus(oResp.error, true);
else if (oResp.success) writeStatus(oResp.success, true);
oResp = oXhr = null;
}
/* ********** Display functions ********** */
function zeroPad(s, len) {
s += "";
return "0000000000".substr(0, (len||2)-s.length)+s;
}
function writeStatus(sTxt, bBold) {
if (sTxt==="") return statusDispl.innerHTML = "";
var oD = new Date();
statusDispl.innerHTML = (bBold?"<div class='emph-text'>\u2022 ":"<div>") + "["
+ zeroPad(oD.getHours()) + ":"
+ zeroPad(oD.getMinutes()) + ":"
+ zeroPad(oD.getSeconds()) + "] - "
+ sTxt + "</div>"
+ statusDispl.innerHTML;
}
</script>
</head>
<body onselectstart="return true" oncontextmenu="return false">
<fieldset>
<legend>Download logfile </legend>
<div class="controls">
<div id="statusDispl"></div>
<p><button onclick="downloadFile(this)">Download</button></p>
</div>
</fieldset>
</body>
</html>
- og ret de tre første variabler til passende stier. Navnene burde være rimelig selvforklarende =)