• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Daten automatisch in Textdatei speichern (Ohne html <form>)

veritas696

Neues Mitglied
Hallo zusammen,

Da ich nicht weiß mit welcher Technik mein Problem zu lösen ist, kann es sein dass mein Beitrag
im falschen Unterforum gelandet ist. Falls dem so ist bitte verschieben. Hoffe der Titel passt zu meinem
Problem.

Hintergrund:
Momentan erstelle ich mittels WebGL ein PartikelSystem welches auf einer Website angezeigt wird.
In einer Endlosschleife wird also die Grafik gerendert.
In dieser Schleife werden per Javascript Funktionen die neuen Positionen der Partikel bestimmt.
Diese Positionen möchte ich für jedes Frame in einer Textdatei abspeichern.

Da man mit Javascript ja kein Zugriff aufs Dateisystem des Servers hat, übergebe ich die
Positionen der Partikel an eine Textarea welche ich dann per Button mittels $_POST und
php (fwrite) auf dem Server speichere.

Gibt es eine Möglichkeit dieses Speichern auch ohne das der Benutzer auf einen Button drückt
auszuführen? Sagen wir wenn 1000 Frames verstrichen sind sollen alle Positionen dieses 1000 Frames
in die Textdatei geschrieben werden und die Simulation soll natürlich weiterlaufen.
Rein mit PHP und Javascript (soweit ich es verstehe) funktioniert es ja nur über
eine Aktion des Benutzers, welche sagen wir die selbe Seite aufruft(Beispiel Affenformular) und den Inhalt der Textarea
in eine Datei schreibt.

Gibt es eine Möglichkeit das zu automatisieren und im Hintergrund auszuführen ohne das die
Seite verlassen und damit die Simulation beendet bzw. neu gestartet wird?

Welche Techniken wären da möglich? Ajax? CGI? JSON? ASP? wovon ich noch keine Ahnung habe ;)

P.S.: Der Grund warum ich das möchte ist, dass das Schreiben in die Textarea mit fortschreitender
Zeit immer langsamer wird(vermutlich wegen des langen Strings) und somit die FPS nach und nach einbrechen.

zum Verständnis vielleicht noch die Javascript-Funktion die die Daten an die Textarea übergibt.

Code:
var addtext = "";
function saveFrame(input) // Input wird über document.form_name.input_name übergeben
{
    //var addtext = "";
    
    var p = particleCount;
    
    while(p--)
    {
        addtext += ""  +myround(particles.vertices[p].x)+":"+ 
                        myround(particles.vertices[p].y)+":"+ 
                        myround(particles.vertices[p].z)+":"+ 
                        myround(attributes.size.value[p])+";";
    }
    
    addtext += "\n";
    
    input.value = addtext;
}

Also :
1. Speichern in Textdatei (z.B. nach bestimmter Anzahl von Frames) ohne das Benutzer dies triggern muss.
2. Seite darf nicht neu geladen werden bzw. Simulation muss weiterlaufen.
 
Gibt es eine Möglichkeit dieses Speichern auch ohne das der Benutzer auf einen Button drückt
auszuführen? Sagen wir wenn 1000 Frames verstrichen sind sollen alle Positionen dieses 1000 Frames
in die Textdatei geschrieben werden und die Simulation soll natürlich weiterlaufen.
Rein mit PHP und Javascript (soweit ich es verstehe) funktioniert es ja nur über
eine Aktion des Benutzers, welche sagen wir die selbe Seite aufruft(Beispiel Affenformular) und den Inhalt der Textarea
in eine Datei schreibt.

Gibt es eine Möglichkeit das zu automatisieren und im Hintergrund auszuführen ohne das die
Seite verlassen und damit die Simulation beendet bzw. neu gestartet wird?

Du kannst das Formular in dem du die Daten eintragen lässt per JavaScript abschicken.
Auf SelfHTML ist hierzu sogar ein Beispiel zu finden.

SELFHTML: JavaScript / Objektreferenz / forms
 
Es gibt in Javascript timing-events (setTimeout(), setInterval()), die eine Funktion ohne Interaktion des Users ausführen können, und wenn die Daten per Ajax an ein PHP-Script versandt werden, lässt sich auch der Seitenrefresh vermeiden.
 
Es gibt in Javascript timing-events (setTimeout(), setInterval()), die eine Funktion ohne Interaktion des Users ausführen können, und wenn die Daten per Ajax an ein PHP-Script versandt werden, lässt sich auch der Seitenrefresh vermeiden.

Ah das hört sich interessant an, das werd ich mal probieren, erstmal vielen Dank :)
 
Zurück
Oben