- Ad -
php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 19-05-2005, 09:38
ankh
 Member
Links : Onlinestatus : ankh ist offline
Registriert seit: May 2005
Beiträge: 304
ankh ist zur Zeit noch ein unbeschriebenes Blatt
ankh eine Nachricht über ICQ schicken
Question HTTP Return und Scriptfortführung

Moin zusammen!

Folgende Ausgangssituation:

Eine beliebige HTML datei greift zur parameterübergabe auf ein PHP Script zu.
Das Script wertet die Parameter aus, schreibt eventuell ein paar einträge in 'ne Datenbank und fertig.

Problematik:
Da HTTP Socketmässig blockt wartet der Browser mit dem weiterladen bis das Script durchgenudelt ist.
Das muss aber eigentlich nicht sein, da ja lediglich parameter übergeben werden sollen.

Frage:
Gibt es eine Möglichkeit vom Script aus dem Brwoser mitzuteilen, dass er weiterladen kann während das Script selbst weiterhin durchläuft und seine Auswertungen fährt?

Schon mal danke im Voraus....

GreeZ
Mit Zitat antworten
  #2 (permalink)  
Alt 19-05-2005, 13:28
Shurakai
 Master
Links : Onlinestatus : Shurakai ist offline
Registriert seit: May 2004
Ort: Bergisch Gladbach
Beiträge: 3.090
Shurakai ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Du könntest output buffering verwenden. Aber damit kann auch nur geladen werden was VOR dem Script liegt, weil alles von oben nach unten durchläuft.
Mit Zitat antworten
  #3 (permalink)  
Alt 19-05-2005, 13:31
Benutzerbild von Nezzar Nezzar
 wannabe batard
Links : Onlinestatus : Nezzar ist offline
Registriert seit: Mar 2002
Beiträge: 477
Nezzar ist zur Zeit noch ein unbeschriebenes Blatt
Nezzar eine Nachricht über ICQ schicken
Standard

Eventuell kannst du da was flush() machen. Die Ausgabe wird dann schon mal an den Browser gesendet, während das Script weiterläuft.
__________________
"Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender
Mit Zitat antworten
  #4 (permalink)  
Alt 19-05-2005, 14:31
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 2.759
Quetschi befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

du könntest das ganze in 2 Skripte aufteilen:

Das 1. Skript nimmt die Parameter entgegen

Das 2. Skript nimmt deinen DB eintrag oder sonst was vor.

Das 2. Skript rufst du im 1. Skript per exec() auf, da gibts irgendnen Parameter dazu, dass das ganze in nem eigenen Prozess gestartet wird. Dann läuft das 1. Skript praktisch ohne Verzögerung bis zum Ende durch.
Mit Zitat antworten
  #5 (permalink)  
Alt 19-05-2005, 16:54
ankh
 Member
Links : Onlinestatus : ankh ist offline
Registriert seit: May 2005
Beiträge: 304
ankh ist zur Zeit noch ein unbeschriebenes Blatt
ankh eine Nachricht über ICQ schicken
Standard

exec() wär an sich 'ne idee...

aber wenn ich von script1 exec(script2, args[]) aufrufe, dann wartet script1 ja trotzdem auf die Rückkehr der Funktion...

damit hab ich ja auch nix gewonnen
Mit Zitat antworten
  #6 (permalink)  
Alt 19-05-2005, 16:58
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 2.759
Quetschi befindet sich auf einem aufstrebenden Ast
Standard

Eben nicht, wenn man's richtig macht.

Zitat:
Das 2. Skript rufst du im 1. Skript per exec() auf, da gibts irgendnen Parameter dazu, dass das ganze in nem eigenen Prozess gestartet wird. Dann läuft das 1. Skript praktisch ohne Verzögerung bis zum Ende durch
Schau mal hier!

Ich hatte ein ähnliches Problem.
Mit Zitat antworten
  #7 (permalink)  
Alt 19-05-2005, 19:23
ankh
 Member
Links : Onlinestatus : ankh ist offline
Registriert seit: May 2005
Beiträge: 304
ankh ist zur Zeit noch ein unbeschriebenes Blatt
ankh eine Nachricht über ICQ schicken
Standard

Das klingt schonmal recht gut, damit könnte ich also dieses problem eliminieren.

aber:
auf das script, dass dann per exec() ein weiteres aufruft, welches in einem eigenen prozess gestartet wird, wird sehr viele Zugriffe erhalten.
Das aktuelle Script läuft bei hohem traffic bis zu 10 sek.

ergo: es wird sehr viele Prozesse starten und dann wird mir wahrscheinlich der Server in die Knie gehen.
Mit Zitat antworten
  #8 (permalink)  
Alt 20-05-2005, 09:04
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 2.759
Quetschi befindet sich auf einem aufstrebenden Ast
Standard

Das Problem hast aber dann so oder so und hat wenig bis nichts mit der Auslagerung dieses Sripts zu tun.

Hast nen eigenen Server oder nur Webspace? Wenn du viel Traffic hast und damit viel Arbeit für den Server verbunden ist wirst über kurz oder lang an so Sachen wie Load-Balancing denken müssen.
Mit Zitat antworten
  #9 (permalink)  
Alt 20-05-2005, 09:29
ankh
 Member
Links : Onlinestatus : ankh ist offline
Registriert seit: May 2005
Beiträge: 304
ankh ist zur Zeit noch ein unbeschriebenes Blatt
ankh eine Nachricht über ICQ schicken
Standard

das problem an sich hab ich sowieso, stimmt.
Allerdings, das erzeugen eines neuen Prozesses erzeugt, imho, auch etwas mehr overhead als die Verwendung von PHP als Apache Modul.

Load Balancing ist auch in Planung, weil ablaufdauer einfach unter aller sau ist...
Mal davon agbesehen, dass sich aus dem code auch noch die ein oder andere msec rausoptimieren lässt.
Mit Zitat antworten
  #10 (permalink)  
Alt 20-05-2005, 10:11
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Ein Browser erkennt, dass das Laden beendet ist, wenn die Content-Length wie im Header angegeben erreicht ist oder ein EOF kommt oder die Verbindung beendet wird. Oder? (großes, ernstzunehmendes Oder, denn ich rate nur)
Mit Zitat antworten
  #11 (permalink)  
Alt 20-05-2005, 10:21
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 2.759
Quetschi befindet sich auf einem aufstrebenden Ast
Standard

ja, aber das war ja nicht das eigentliche Problem.
Mit Zitat antworten
  #12 (permalink)  
Alt 20-05-2005, 11:30
ankh
 Member
Links : Onlinestatus : ankh ist offline
Registriert seit: May 2005
Beiträge: 304
ankh ist zur Zeit noch ein unbeschriebenes Blatt
ankh eine Nachricht über ICQ schicken
Standard

Also, erstmal danke an Quetschi

leider wartet bei mir script 1 auf die Rückkehr von exec(), selbst wenn ich die Ausgabe umleite...

zum testen hab ich leider nur ein Win System, und ich gehe mal davon aus, dass sich eine windows shell nicht in den Hintergrund schieben lässt.

Oder ich hab den stream falsch umgeleitet...
Mit Zitat antworten
  #13 (permalink)  
Alt 20-05-2005, 11:35
Coragon Rivito
 Master
Links : Onlinestatus : Coragon Rivito ist offline
Registriert seit: Oct 2002
Ort: Mils/AT
Beiträge: 910
Coragon Rivito ist zur Zeit noch ein unbeschriebenes Blatt
Coragon Rivito eine Nachricht über ICQ schicken Coragon Rivito eine Nachricht über AIM schicken Coragon Rivito eine Nachricht über Yahoo! schicken
Standard

.. eine windows shell lässt sich in den hintergrund schieben, mach ich doch schließlich momentan auch so ..

exec('dein_befehl_zum_ausführen > gewünschte_umleitung');

/dev/null gibts ja leider nicht, also such dir irgend eine temporäre datei

PHP-Code:
do $file $_ENV['TEMP'] . '\\' sha1(microtime(true)) . '_phpTmp';
while (
file_exists($file)); 
irgendwie so in der art - das while sollte eigentlich gar ned greifen, da es zu keinem konflikt kommen sollte, habs trotzdem mal eingebaut, ist ja nur eine zeile + do
__________________
mfg,
Coragon
Mit Zitat antworten
  #14 (permalink)  
Alt 20-05-2005, 11:53
ankh
 Member
Links : Onlinestatus : ankh ist offline
Registriert seit: May 2005
Beiträge: 304
ankh ist zur Zeit noch ein unbeschriebenes Blatt
ankh eine Nachricht über ICQ schicken
Standard

hmm... das file_exists() is tatsächlich net nötig, da die datei, falls nicht vorhanden, angelegt wird.

momentan leite ich in 'ne logdatei um, also nicht mehr in STDOUT.

Trotzdem wartet das exec() aufrufende script.

mal mit code:

PHP-Code:
$f $_ENV['TEMP']."/".sha1(microtime(true))."._tmp";
exec("PHP {$_SERVER['DOCUMENT_ROOT']}exectest/sqlexec.php \"{$args[1]}\" \"{$args[3]}\"  > $f"); 
Mit Zitat antworten
  #15 (permalink)  
Alt 20-05-2005, 11:59
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 2.759
Quetschi befindet sich auf einem aufstrebenden Ast
Standard

Weiß jetzt ned wie das unter Windows geht, aber musst du PHP nicht mit PHP.exe aufrufen?

@Coragon
PHP-Code:
exec("php4 ".$DOCUMENT_ROOT."/pfadzum/skript.php > /dev/null 2>&1 & echo $!"); 
> /dev/null : leitet an den 'Papierkorb' um, soweit sogut

aber was ist das noch?

> 2>&1 & echo $!

Muss gestehen, dass ich das damals einfach von irgendwo übernommen hab und es hat funktioniert. Aber würd schon ganz gerne wissen was ich da überhaupt angestellt hat
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

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 are an
Pingbacks are an
Refbacks are an


PHP News

MariaDB 5.5 veröffentlicht
MariaDB 5.5 veröffentlichtDie freie MySQL-Alternative MariaDB wurde in der stabilen Version 5.5.23 veröffentlicht und soll einige Verbesserungen gegenüber Oracles Communityversion von MySQL mitbringen.

16.04.2012 | Berni

Deutsche Yii Framework Community
Deutsche Yii Framework CommunitySeit dem 19.03.2012 gibt es für die Yii PHP Framework Community ein deutsches Zuhause.

20.03.2012 | dhcomputer

 

Aktuelle PHP Scripte

Advanced Login ansehen Advanced Login

Login-System und Kundenverwaltung, die sich spielend leicht in bestehende Webseiten einbauen lässt und einen enormen Funktionsumfang bietet. Ihre eigene Webseite muss mit Advanced Login nicht umständlich an ein fertiges System angepasst werden.

25.05.2012 Madden | Kategorie: PHP/ Kundenverwaltung
BROM CMS/BelCal 3 ansehen BROM CMS/BelCal 3

Spezielles CMS für Betreiber von Ferienwohnungen. Komplette Seitenerstellung online, Verwaltung mehrerer Objekte, Reservierungssystem mit sofortigem Abgleich im Belegungskalender und vieles mehr bietet dieses Content Management System.

25.05.2012 belcal2 | Kategorie: PHP/ CMS
belbit LiveSupport Script ansehen belbit LiveSupport Script

Schnellen und unkomplizierten Support im LiveSupport-Chat anbieten. Ohne Datenbank und in wenigen Sekunden installiert.

24.05.2012 EichbaumMedia | Kategorie: PHP/ Chat
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:46 Uhr.