Flashhilfe.de - Flash Community

Speichern funktioniert unzuverlässig

 


AntwortenRegistrieren Seite1  

chricken#1
Benutzerbild von chricken
Beiträge: 65
Registriert: Apr 2004

02.06.2007, 08:13

Moin,
ich habe eine Applikation geschrieben, die über ein PHP-Script Dateien wegspeichern soll. Und genau diese Dateien werden beim nächszten Start auch wieder eingeladen - was ja irgendwie logisch ist.
Nun habe ich ein PHP-Script programmiert, welches zunächst die alte Datei zwecks Backup umbenennt und dann die neue Datei anlegt.
Eigentlich funktioniert das auch - aber leider unzuverlässig. Soll heißen, mal tut es und mal nicht. Ich konnte bislang keine Regelmäßigkeit feststellen, was mich zu der Annahme bringt, daß es sich um ein Timing-Problem handelt.
Soll heißen: ich vermute, daß das System in Timingprobleme kommt, wenn es die eine Datei umbenennen und dann eine Datei gleichen Namens anlegen soll.
Natürlich kann ich als PHP-Noobie auch einen Programmierfahler nicht ausschließen.
Deshalb hier erstmal das Script:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
    $pfad 
$_POST['pfad'];
   
$pjnr $_POST['pjnr'];
   
$daten $_POST['daten'];

   
$verbindung fopen("../Daten/$pfad/projekte/projekte.bup",'a');
   
fwrite($verbindung$daten);
   
fclose($verbindung);
    echo(
"geschriebene Daten: $daten");

   
unlink("../Daten/$pfad/projekte/projekte.old");
   
rename("../Daten/$pfad/projekte/projekte.xml""../Daten/$pfad/projekte/projekte.old");
   
rename("../Daten/$pfad/projekte/projekte.bup""../Daten/$pfad/projekte/projekte.xml");

?>


Und das AS, um dieses PHP aufzurufen
ActionScript:
1
2
3
4
5
6
7
8
//Loadvar-Objekt zum Speichern anlegen
      var sender:LoadVars = new LoadVars();
      sender.daten=save_xml;
      sender.pfad=login.firma;
      sender.pjnr=projekte.id[_root.desktop.pj.auswahl];
      
      //XML-Objekt versenden
      sender.send("scripting/projekte.php", "blank", "POST");


btw: wie krieg ich das PHP-Script dazu, keine Ausgabe zu machen? Wenn ich dei Echo-Anweisung einfach rausnehme, dann macht er trotzdem ein (leeres) Browserfenster auf.

aquarius#2
Benutzerbild von aquarius
Beiträge: 277
Wohnort: Erde
Registriert: Oct 2003

02.06.2007, 09:31

sender.send("scripting/projekte.php", "blank", "POST");

Parameter 2 sagt das doch aus ?

Und sach mal : fopen("../Daten/$pfad/projekte/projekte.bup",'a');

das hat jemals funktioniert ? - ich meine wegen dem "$pfad"....
Geändert von aquarius am 02.06.07 um 09:33 Uhr
chricken#3
Benutzerbild von chricken
Beiträge: 65
Registriert: Apr 2004

Themenautor/in

02.06.2007, 09:57

Ja, das hat funktioniert. Aber eben leider nicht immer.
Ich habe so den Gedanken, daß man hier auch die Erfolgmeldung abwarten muss, bevor eine andere Aktion gestartet wird. Aber ich weiß eben nicht, wie ich das machen soll ....

aquarius#4
Benutzerbild von aquarius
Beiträge: 277
Wohnort: Erde
Registriert: Oct 2003

02.06.2007, 10:18

du kannst das ganze einfach mit if(fopen(...)) prüfen, da die Funktion im Erfolgsfall ein Boolean zurückliefert (false wenns schief ging)...
(rename und unlink machen das ebenfalls soweit ich weiss)

Du solltest aber erstmal prüfen ob deine Dateien auch vorhanden sind... old und xml datei sind ja nach dem Skript nicht zwangsläufig vorhanden... - bzw. wenn das da nur um einen User geht - macht dann das "Backup" überhaupt Sinn ?

aquarius#5
Benutzerbild von aquarius
Beiträge: 277
Wohnort: Erde
Registriert: Oct 2003

02.06.2007, 10:24

Du solltest das ganze Flashseitig dann auch mit sendAndLoad machen, und vom Php Skript was zurückschicken.... du hast ja im Flash im Moment gar keine Möglichkeit zu schauen, obs gut ging... so gehts dann da auch erst weiter wenn das abgearbeitet wurde... ich denke da liegt vielleicht auch dein "Timing" Problem ?

chricken#6
Benutzerbild von chricken
Beiträge: 65
Registriert: Apr 2004

Themenautor/in

02.06.2007, 11:56

Sorry, bin echt ein PHP-Nooby. Eigentlich verwende ich es nur notgedrungen, weil Flash nicht speichern kann.
Ich kann leider mit if(fopen)... nicht viel anfangen. Wie verwende ich es, was genau passiert dann?

In Flash werde ich mal sendAndLoad versuchen, danke :)

aquarius#7
Benutzerbild von aquarius
Beiträge: 277
Wohnort: Erde
Registriert: Oct 2003

02.06.2007, 12:43

naja du hast doch da schon fopen("blablabla") stehen...

also :

if(fopen("blablabla")){

//weitermachen mit deinem anderen Code

}

das heisst dann einfach das PHP wartet bis fopen ein "true" zurückliefert - und erst dann mit dem anderen Code fortfährt... verstehste ;)

Und dann schau halt mal weil ".../Daten/$path/...." geht eigentlich nicht, weil alles in den Aführungszeichen als String interpretiert wird also eher: "../Daten/".$path."/..." schreiben, dann geht das eher


AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2020 Sebastian Wichmann - Flashhilfe.de