10.06.2022, 12:48
Hallo zusammen,
ich versuche gerade mit js meine Datenbank zu aktualisieren, indem ich in eine Spalte neue Einträge reinschreibe. Um die benötigten Daten zu laden und später zu schreiben benutze ich fetch. Die Funktion funktioniert auch. Das Problem sind nur die vielen Einträge. Ich glaube da ich fetch benutze und so viele Daten asynchron lade, wird mein Arbeitspeicher schnell voll. Meine Frage ist jetzt, wie kann ich die for Schleife verändern, damit der Speicher nicht vollläuft. Kann ich z.B. den 1. fetch Befehl irgendwie synchron laden?
Vielen Dank für eure Hilfe
ich versuche gerade mit js meine Datenbank zu aktualisieren, indem ich in eine Spalte neue Einträge reinschreibe. Um die benötigten Daten zu laden und später zu schreiben benutze ich fetch. Die Funktion funktioniert auch. Das Problem sind nur die vielen Einträge. Ich glaube da ich fetch benutze und so viele Daten asynchron lade, wird mein Arbeitspeicher schnell voll. Meine Frage ist jetzt, wie kann ich die for Schleife verändern, damit der Speicher nicht vollläuft. Kann ich z.B. den 1. fetch Befehl irgendwie synchron laden?
Vielen Dank für eure Hilfe
Code:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html>
<script>
//wikiCode = "Q47554";
errors = [];
sucesses = 0;
const params = new FormData();
for (let i = 0; i < 880000; i++) {
params.append('post_var1', i);
fetch("getWiki2Attractions3.php", {
method: 'post',
body: params
}).then(res => {
return res.text();
}).then(res => {
//console.log(res)
output = JSON.parse(res)
//console.log(output)
//console.log(i)
//console.log(output.towns[0].wikidata)
if (output.towns.length == 0){errors.push(i)}
wikiCode = output.towns[0].wikidata
console.log(wikiCode)
getSrcImage(wikiCode)
})
//getSrcImage(wikiCode)
function getSrcImage(wikiCode){
strImageAdd1 = "https://www.wikidata.org/wiki/Special:EntityData/"
strImageAdd2 = ".json"
//wikiCode = "Q3005760"
strImageAdd = strImageAdd1 + wikiCode + strImageAdd2
// console.log(strImageAdd)
// console.log(outputWikiData)
//prefix = "https://www.wikidata.org/wiki/"
//prefix3 = "#/media/File:";
//srcWikiData = prefix + wikiCode + prefix3 //+ outputWikiData
//srcWikiData = prefix + wikiCode;
//srcWikiData = "https://www.wikidata.org/wiki/Q6520258#/media/File:Leiston%20Abbey%20-Suffolk-3.jpg"
//https://upload.wikimedia.org/wikipedia/commons/thumb/f/fd/Leiston_Abbey_-Suffolk-3.jpg/1280px-Leiston_Abbey_-Suffolk-3.jpg
fetch(strImageAdd, {
method: 'post',
}).then(res => {
return res.text();
}).then(res => {
output = JSON.parse(res)
//console.log(output)
console.log(output.entities[wikiCode].claims.P18[0])
if(output.entities[wikiCode].claims.hasOwnProperty("P18")){
outputWikiData = output.entities[wikiCode].claims.P18[0].mainsnak.datavalue.value;
console.log(outputWikiData)
prefix = "https://www.wikidata.org/wiki/"
prefix3 = "#/media/File:";
srcWikiData = prefix + wikiCode + prefix3 + outputWikiData
console.log(srcWikiData)
srcWikiData = srcWikiData.replaceAll(" ", "_");
//srcWikiData = "https://www.wikidata.org/wiki/Q6520258#/media/File:Leiston%20Abbey%20-Suffolk-3.jpg"
console.log(srcWikiData)
console.log(typeof(srcWikiData))
const params = new FormData();
params.append('post_var1', srcWikiData);
php_function = "wikiDataConvertLink.php"
fetch(php_function, {
method: 'post',
body: params
}).then(res => {
return res.text();
}).then(res => {
console.log(res)
const params = new FormData();
params.append('post_var2', srcWikiData);
params.append('post_var1', wikiCode);
fetch("writeWiki2srcAttractions.php", {
method: 'post',
body: params
}).then(res => {
return res.text();
}).then(res => {
if (res.includes("Error")){errors.push(i),console.log(res)}
console.log(res)
console.log("sucesses : ", sucesses = sucesses +1, ";errors", errors)
console.log(j = j+1)
})
})
}
else{errors.push(i);console.log(errors)}
})
}
}
</script>