Zurück   Flashforum > Flash und Server > Server-Seite allgemein

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-06-2007, 09:17   #1 (permalink)
Zero to Hero
 
Registriert seit: Apr 2007
Beiträge: 871
serverzeit abfrage

hi leute, ich komm hier nicht weiter...

ich will die aktuelle serverzeit aus php an flash übergeben, dort soll dann alle x stunden eine funktion ausgelöst werden...

das einlesen in flash klappt soweit... auch wenn ich entweder noch millisekunden format oder strftime() verwende. nur wie bringe ich flash bei, dass er sich aus diesen millisekunden die stunden schnappen soll und auf basis z.b. "volle Stunde" eine funktion auslösen soll...
ingrimm ist offline   Mit Zitat antworten
Alt 22-06-2007, 09:26   #2 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
Warum übergibst du einen Timestamp an Flash wenn du diesen dort nicht verarbeiten kannst? Einfacher wäre doch gleich die aktuelle Zeit an Flash zu übergeben:

PHP-Code:
$hour date("H");
$minute date("i");
$second date("s");

echo 
"&hour=".$hour."&minute=".$minute."&second=".$second
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Alt 22-06-2007, 10:10   #3 (permalink)
Zero to Hero
 
Registriert seit: Apr 2007
Beiträge: 871
es dreht sich um ein gewinnspiel, also will ich vermeiden, dass jemand einfach seine lokalzeit umstellt und somit be*******en könnt...

ich habs jetzt lauffähig aber ein anderes problem...

bekomm ich flash irgendwie dazu, das hier:
PHP-Code:
var loader:LoadVars = new LoadVars();
loader.onLoad = function(success) {
    if (
success) {
        
ldr_txt.text 'Datei geladen';
        
//in var speichern
        
var servdate this.servdatephp;
        var 
servtime this.servtimephp;
        
//ausgeben
        
_root.minuten_txt.text "servertag: "+servdate;
        
stunden_txt.text "serverzeit: " +servtime;
        
//umrechnen
        
servmilli parseFloat(servtime);
        
//ausgeben
        
servmilli_txt.text servmilli;
        if(
servtime '105000')
        {
            
_root.gotoAndStop("zwei");
            
ldr_txt.text 'erstes bild';
        }      
        if(
servtime '105100')
        {
            
_root.gotoAndStop("drei");
            
ldr_txt.text 'zweites bild';
        }      
        if(
servtime '105600')
        {
            
_root.gotoAndStop("vier");
            
ldr_txt.text 'drittes bild';
        }      
        if(
servtime '105700')
        {
            
_root.gotoAndStop("fünf");
            
ldr_txt.text 'viertes bild';
        }      
        if(
servtime '110100')
        {
            
_root.gotoAndStop("sechs");
            
ldr_txt.text 'fünftes bild';
        }      
        if(
servtime '110200')
        {
            
_root.gotoAndStop("sieben");
        } 
        if(
servtime '110300')
        {
            
_root.gotoAndStop("acht");
                              
        } 
};
loader.load('getdate.php'); 
alle 2 stunden auszuführen(natürlich serverzeitbasiert) :-).

ich scheine da ein logikproblem zu haben, flash arbeitet ja auf dem client und müsste um echtzeit-serverzeit zu gewährleisten, sich jede sekunde neu laden, oder?

1. wie bekomme ich da das caching in den griff?
2. sind x requests(based on onEnterframe()) zu viel für nen server?
ingrimm ist offline   Mit Zitat antworten
Alt 22-06-2007, 10:21   #4 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
Ich verstehe die Aufgabenstellung noch nicht so ganz. Worum geht es genau? Was ich dir abe gleich sagen kann ist dass du alles wichtige NUR serverseitig rechen darfst.
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Alt 22-06-2007, 10:25   #5 (permalink)
Zero to Hero
 
Registriert seit: Apr 2007
Beiträge: 871
die swf soll eigenständig serverzeiten abfragen, so dass der user nicht das browserfenster refreshen muss... änderungen an der serverzeit sollen sich auf den film auswirken.
ingrimm ist offline   Mit Zitat antworten
Alt 22-06-2007, 11:00   #6 (permalink)
Zero to Hero
 
Registriert seit: Apr 2007
Beiträge: 871
sooo... ich habs am laufen... prinzipiell lässt ein intervall alle 5 sekunden die onloadfunktion ablaufen... jetzt kann ich mal nur hoffen, dass der server auf dem das gehostet werden soll schnell genug ist:-)

hier das script:

PHP-Code:
_root.createEmptyMovieClip("holder"this.getNextHighestDepth());
holder.attachMovie('bild1''bild1_mc'this.getNextHighestDepth());


var 
loader:LoadVars = new LoadVars();
loader.onLoad = function(success) {
    if (
success) {
        
ldr_txt.text 'Datei geladen';
        
//in var speichern
        
var servdate this.servdatephp;
        var 
servtime this.servtimephp;
        
//ausgeben
        
_root.minuten_txt.text "servertag: "+servdate;
        
stunden_txt.text "serverzeit: " +servtime;
        
//umrechnen
        
servmilli parseFloat(servtime);
        
//ausgeben
        
servmilli_txt.text servmilli;
        if(
servtime '115200')
        {
            
holder.attachMovie('bild2''bild2_mc'this.getNextHighestDepth())
            
ldr_txt.text 'zweites bild';
        }      
        if(
servtime '115230')
        {
            
holder.attachMovie('bild3''bild3_mc'this.getNextHighestDepth())
            
ldr_txt.text 'drittes bild';
        }      
        if(
servtime '115300')
        {
            
holder.attachMovie('bild4''bild4_mc'this.getNextHighestDepth())
            
ldr_txt.text 'viertes bild';
        }      
        if(
servtime '115330')
        {
            
holder.attachMovie('bild5''bild5_mc'this.getNextHighestDepth())
            
ldr_txt.text 'fünftes bild';
            
        }      
        if(
servtime '115400')
        {
            
holder.attachMovie('bild6''bild6_mc'this.getNextHighestDepth())
            
ldr_txt.text 'sechstes bild';
        }      
        if(
servtime '115430')
        {
            
holder.attachMovie('bild7''bild7_mc'this.getNextHighestDepth())
            
ldr_txt.text 'siebtes bild';
        } 
        if(
servtime '115500')
        {
            
holder.attachMovie('bild8''bild8_mc'this.getNextHighestDepth())
            
ldr_txt.text ="letztes bild"
                              
        



        }

};
loader.load('getdate.php');




var 
intervalId:Number;
var 
duration:Number 5000;

function 
executeCallback():Void {
loader.load('getdate.php');
}

intervalId setInterval(this"executeCallback"duration); 
ingrimm ist offline   Mit Zitat antworten
Alt 24-06-2007, 12:32   #7 (permalink)
Zero to Hero
 
Registriert seit: Apr 2007
Beiträge: 871
man man man... vorgestern lief alles soo gut und ich heudeu habs nicht save gelagert...

kinners ich hab n problem... ichh ab mein eigenes skript nochmal baun dürfen und bekomms nicht gebacken... also ausgangssituation wie oben, flash lieft mir auch anstandslos die beiden variablen ein nur was dann über trace rauskommt nur der quellcode in der pvp datei...

genauer:

PHP-Code:
<?php

$serverdate
=date("D M j G:i:s T Y");
echo 
"&servdatephp=".$serverdate;
$servertime=time(); 
echo 
"&servtimephp=".$servertime;
?>
PHP-Code:
var loader:LoadVars = new LoadVars();
loader.onLoad = function(success) {
    if (
success) {
        
ldr_txt.text 'Datei geladen';
        
//in var speichern
        
var servdate this.servdatephp;
        var 
servtime this.servtimephp;
        
//ausgeben
        
_root.minuten_txt.text "servertag: "+servdate;
        
stunden_txt.text "serverzeit: " +servtime;

        
servmilli_txt.text servmilli;

}

};
loader.load('time.php');




var 
intervalId:Number;
var 
duration:Number 5000;

function 
executeCallback():Void {
loader.load('time.php');
}

intervalId setInterval(this"executeCallback"duration); 

undin den textfeldern steht dann nur
Zitat:
servertag: ".$serverdate;
und
Zitat:
serverzeit: ".$servertime; ?>
wenn ich die php datei jedoch im browserfenster starte, werden date und zeit ausgewertet und als tahlen oder datumsangaben ausgegeben...

ich hab echt keinen plan was ich falsch mach.... im endefekt dreht sich vermutlich nur um eine zeile.... naja mehr augen = weniger fehler...

vielen herzlichen dank.
ingrimm ist offline   Mit Zitat antworten
Alt 24-06-2007, 15:18   #8 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
Hi,

ich nehme an, die falschen Ausgabetexte bekommst du, wenn du es in Flash direkt testest. Dann ist es klar, weil Flash die php-Datei übers Dateisystem einliest, wodurch das PHP natürlich nicht interpretiert wird. Du musst es klaro über einen Webserver aurufen, also loader.load("http://localhost/folder/time.php");

Im übrigen kannst du die PHP-Zeit (den Timestamp), also die Zeit in Sekunden seit dem 1.1.1970 auch an ein Date-Objekt übergeben.
var dat = new Date(this.servertimephp);
Danach kannst du z.B. mit dat.getHours(); die Stunden ausgeben, musst also nicht die Timstamps direkt vergleichen. Musst nur aufpassen, php liefert die Zeit in Sekunden, Flash erwartet Milisekunden, also noch mal 1000 nehmen.

Außerdem würde es reichen, das PHP einmal aufzurufen, um die Zeit festzulegen. Danach würde ich den Wert aus PHP regelmäßig mit getTimer() ergänzen, also die Zeit, die der Flashfilm läuft. Setz dir im onLoad einen Startwert für getTimer(): var startTime = getTimer();
Und in der Funktion: var dat = new Date(phpzeit+getTimer()-startTime);

Sonst hast du a) sehr viele Ladeaktionen und b) auch immer einen zeitlichen Gap zwischen load und onLoad...

Grüße
Sascha
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 12:48 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele