Meinews.de  


Zurück   Meinews.de > Forum > Newsgroups de.comp.lang.* Forum > Newsgroup de.comp.lang.php.misc
Registrieren FAQ Benutzerliste Kalender Suchen Heutige Beiträge Alle Foren als gelesen markieren

Newsgroup de.comp.lang.php.misc Sonstige Fragen zu Anwendung und Programmierung.

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 11-06-2009, 01:37 PM
Oliver
 
Beiträge: n/a
Standard Parallelprozesse mit Rückgabe: Best Practice?

Guten Tag miteinander

Ich möchte mir - konzeptionell - ein Beispiel erstellen, welches
Rückgabewerte direkt ausgibt (klassischerweise im Browser) anstatt auf
das Ende der Funktion zu warten.

Beispiel:
------------
for ($i = 0; $i < 9; $i++ )
{
echo "Counter: ".$i ;
}

Bei diesem Beispiel erhalte ich eine Ausgabe, sobald der Zähler 9
erreicht hat.

Ziel:
------
Nun möchte ich bei jedem Durchlauf eine Ausgabe erhalten anstatt nur
am Ende.

Erste Überlegungen:
------------------------------
1. Aufrufe per JavaScript
Ich habe mir gedacht, dass ich die Funktionen über JavaScript (Ajax)
aufrufen könnte. Allerdings sind mir die JS Konstrukte nicht geläufig
und ich finde - gefühlsmässig - dass das der falsche Ansatz ist (ich
mag die Programmiersprachen auch nicht mischen, wenn möglich).
Ausgenommen, dass ich wohl nicht um einen "Container" für die Ausgabe
im Browser herum komme.

2. Forken des Prozesses
Ich halte diesen Ansatz für den "richtigeren". Ich könnte die
Prozesse/ Funktien forken und die Ausgabe in ein Browserobjekt geben.


Frage:
----------
Wie macht ihr das? Best practice?
Meine Frage geht mir weniger um die Technische Umsetzung als eben, was
denn der beste (oder bessere) Ansatz ist.


Grüsse
Oliver



Mit Zitat antworten
Alt Today
Advertising
Google Adsense
 
This advertising will not be shown
in this way to registered members.
Register your free account today
and become a member on
Meinews.de
Standard Sponsored Links

  #2  
Alt 11-06-2009, 03:20 PM
Matthias P. Wuerfl
 
Beiträge: n/a
Standard Re: Parallelprozesse mit Rückgabe: Best Practice?

Hallo!

Ich verstehe nicht, was Du willst, denn...

> Beispiel:
> ------------
> for ($i = 0; $i < 9; $i++ )
> {
> echo "Counter: ".$i ;
> }
>
> Bei diesem Beispiel erhalte ich eine Ausgabe, sobald der Zähler 9
> erreicht hat.


Nein, so ist das nicht, sondern...

> Ziel:
> ------
> Nun möchte ich bei jedem Durchlauf eine Ausgabe erhalten anstatt nur
> am Ende.


So ist das. Normal. Standard.

Grüße, Matthias
Mit Zitat antworten
  #3  
Alt 11-06-2009, 03:42 PM
Claus Reibenstein
 
Beiträge: n/a
Standard Re: Parallelprozesse mit Rückgabe: Best Practice?

Matthias P. Wuerfl schrieb:

> Ich verstehe nicht, was Du willst, denn...


Wer ist "Du"?

>> Beispiel:
>> ------------
>> for ($i = 0; $i < 9; $i++ )
>> {
>> echo "Counter: ".$i ;
>> }
>>
>> Bei diesem Beispiel erhalte ich eine Ausgabe, sobald der Zähler 9
>> erreicht hat.

>
> Nein, so ist das nicht, sondern...


Ich vermute mal, dass der ominöse "Du" (dessen Posting vermutlich in
meinem Filter hängen geblieben ist) seinen Code nicht per Copy&Paste
übernommen hat, wie man es allgemein tut bzw. tun sollte, sondern
abgetippt hat und dabei seinen Fehler, den wir nun nicht sehen können,
automatisch korrigiert hat.

Gruß. Claus
Mit Zitat antworten
  #4  
Alt 11-06-2009, 04:04 PM
Oliver
 
Beiträge: n/a
Standard Re: Parallelprozesse mit Rückgabe: Best Practice?

On 6 Nov., 16:42, Claus Reibenstein <4spamerso...*kabelmail.de> wrote:
> Matthias P. Wuerfl schrieb:
>
> > Ich verstehe nicht, was Du willst, denn...


Ich möchte eine Unterhaltung über die Best-Practice des parallelen
Ausführens und Anzeigen von Ausgaben an den Browser über Apache mit
PHP mod.

....

>
> Ich vermute mal, dass der ominöse "Du" (dessen Posting vermutlich in
> meinem Filter hängen geblieben ist) seinen Code nicht per Copy&Paste
> übernommen hat, wie man es allgemein tut bzw. tun sollte, sondern
> abgetippt hat und dabei seinen Fehler, den wir nun nicht sehen können,
> automatisch korrigiert hat.
>
> Gruß. Claus


Ich hoffe doch, es hat keinen Fehler in meinem FOR-Beispiel! ;-)

Grüsse
Oliver
Mit Zitat antworten
  #5  
Alt 11-06-2009, 04:18 PM
Oliver
 
Beiträge: n/a
Standard Re: Parallelprozesse mit Rückgabe: Best Practice?

On 6 Nov., 16:20, "Matthias P. Wuerfl" <matth...*wuerfl.com> wrote:
> Hallo!
>
> Ich verstehe nicht, was Du willst, denn...
>

.....
> > Bei diesem Beispiel erhalte ich eine Ausgabe, sobald der Zähler 9
> > erreicht hat.

>
> Nein, so ist das nicht, sondern...
>
> > Ziel:
> > ------
> > Nun möchte ich bei jedem Durchlauf eine Ausgabe erhalten anstatt nur
> > am Ende.

>
> So ist das. Normal. Standard.
>
> Grüße, Matthias


Danke für Deine Antwort.

Ja, da hast Du recht. Die Wahl meines Beispieles ist ungeschickt bzw.
zu rudimentär.

Neuer Anlauf:
"FOR" wird ausgeführt, nachdem eine Clientseitige Anfrage gestartet
wurde.
Das Ergebnis erscheint nun erst, wenn die FOR-Funktion ihr Ende
erreicht hat.

Oder etwas näher an der Praxis:
=> HTML Formular => Request an Server => Ausführen Server Code seriel
Resultat an Browser <=

=> HTML Formular => Request an Server => Ausführen Server Code
parallel
Resultat an Browser <=
Resultat an Browser <=
Resultat an Browser <=

Abgesehend davon ist mir nicht das technische Vorgehen wichtig,
sondern es interessiert mich, "wie das konzeptionell so im allgemeinen
gemacht wird".

Grüsse
Oliver

Grüsse
Oliver








Mit Zitat antworten
  #6  
Alt 11-06-2009, 04:36 PM
Oliver
 
Beiträge: n/a
Standard Re: Parallelprozesse mit Rückgabe: Best Practice?

On 6 Nov., 14:37, Oliver <mykl...*gmail.com> wrote:
> Guten Tag miteinander

....
>
> Frage:
> ----------
> Wie macht ihr das? Best practice?
> Meine Frage geht mir weniger um die Technische Umsetzung als eben, was
> denn der beste (oder bessere) Ansatz ist.
>
> Grüsse
> Oliver


Nun, ich beantworte meine Frage mal selber in der DU-Form.
So, wie Du das willst geht das nicht. PHP die Prozesse im Apache nicht
parallel laufen haben.

Du kommst nicht drum herum, die Funktionen entweder extern auf zu
rufen oder die Ausgaben im Hintergrund über (Text)Dateien (oder DB
Einträge) zu lesen. Ja, das ist NICHT was Du wolltest weil man dann
irgendwie die Ausgabe ja nicht weiss, an welchen Browser auf der Welt
sie soll.

Eine Lösung schlägt Julian über das Verwenden von Logdateien vor [1].

Wenn Du wirklich direkt eine serverseitige Rückgabe von Werten in der
GUI willst, empfehle ich Dir, Dich in AJAX ein zu lesen.

Die Ansätze (bzw Workarrounds), die Du dir überlegt hast, sind also
schon richtig. Go ahead. Noch ein Tip: Google -> "php popen"

Grüsse
Oliver an Oliver





[1] Gi-Blog
http://blog.gi-project.de/2009/07/mu...eading-in-php/

Mit Zitat antworten
  #7  
Alt 11-07-2009, 01:17 PM
Matthias P. Wuerfl
 
Beiträge: n/a
Standard Re: Parallelprozesse mit Rückgabe: Best Practice?

Oliver schrieb:

> "FOR" wird ausgeführt, nachdem eine Clientseitige Anfrage gestartet
> wurde.
> Das Ergebnis erscheint nun erst, wenn die FOR-Funktion ihr Ende
> erreicht hat.


Nein, währenddessen.

> Oder etwas näher an der Praxis:
> => HTML Formular => Request an Server => Ausführen Server Code seriel
> Resultat an Browser <=


Nein.

> => HTML Formular => Request an Server => Ausführen Server Code
> parallel
> Resultat an Browser <=
> Resultat an Browser <=
> Resultat an Browser <=


Ja.

Grüße, Matthias
Mit Zitat antworten
  #8  
Alt 11-07-2009, 01:23 PM
Matthias P. Wuerfl
 
Beiträge: n/a
Standard Re: Parallelprozesse mit Rückgabe: Best Practice?

Matthias P. Wuerfl schrieb:

>> "FOR" wird ausgeführt, nachdem eine Clientseitige Anfrage gestartet
>> wurde.
>> Das Ergebnis erscheint nun erst, wenn die FOR-Funktion ihr Ende
>> erreicht hat.

>
> Nein, währenddessen.


Das kannst du doch einfach überprüfen:

<?php
// Leitung freipusten für IE
while($i= 0 ; $i < 1024 ; $i++ ){
echo " ";
}
// Jetzt der eigentliche Test

while($i= 0 ; $i<100 ;$i++){ // 100 mal sollte reichen, he?
echo "foo $i"; // Ausgabe
flush(); //Und weg damit zum Browser
sleep(1); // Eine Sekunde warten
}

?>

Grüße, Matthias
Mit Zitat antworten
  #9  
Alt 11-09-2009, 11:54 AM
Oliver
 
Beiträge: n/a
Standard Re: Parallelprozesse mit Rückgabe: Best Practice?

On 7 Nov., 14:23, "Matthias P. Wuerfl" <matth...*wuerfl.com> wrote:
> Matthias P. Wuerfl schrieb:
>
> >> "FOR" wird ausgeführt, nachdem eine Clientseitige Anfrage gestartet
> >> wurde.
> >> Das Ergebnis erscheint nun erst, wenn die FOR-Funktion ihr Ende
> >> erreicht hat.

>
> > Nein, währenddessen.

>
> Das kannst du doch einfach überprüfen:
>
> <?php
> // Leitung freipusten für IE
> while($i= 0 ; $i < 1024 ; $i++ ){
> * * * * echo " ";}
>
> // Jetzt der eigentliche Test
>
> while($i= 0 ; $i<100 ;$i++){ // 100 mal sollte reichen, he?
> * * * * echo "foo $i"; // Ausgabe
> * * * * flush(); //Und weg damit zum Browser
> * * * * sleep(1); // Eine Sekunde warten
>
> }
>
> ?>
>
> Grüße, Matthias


Hi Matthias

Danke für Dein (sehr gutes) Beispiel.

Meine Problemstellung war wohl falsch.
Ahh; ich sehe, Du verwendest Flush. Ich werde damit einige Versuche
tun.



Neues Beispiel:
---------------------------

for( $i= 0 ; $i<100 ; $i++)
{ // Ich mag die Klammern lieber unten

echo "foo $i \n"; // Ausgabe

MeineFunktion($i);

flush(); //Und weg damit zum Browser

}

function MeineFunktion($i)
{
echo "Bar: $i \n";
}


Frage:
----------
Wird auf die Funktion "MeineFunktion()" gewartet (sequentiell) oder
wird die Funktion (im schnellsten Fall) 100 Mal gleichzeitig
ausgeführt?

Meinen Untersuchungen nach, wird die Funktion sequentuell abgearbeitet
(allerdings habe ich FLUSH nich versucht); welche Konzepte verfolgt
ihr um ein paralleles Abarbeiten zu erreichen?

Grüsse
Oliver



Ziel:
Die Funktion
Mit Zitat antworten
  #10  
Alt 11-09-2009, 11:57 AM
Oliver
 
Beiträge: n/a
Standard Re: Parallelprozesse mit Rückgabe: Best Practice?

....

> Frage:
> ----------
> Wird auf die Funktion "MeineFunktion()" gewartet (sequentiell) oder
> wird die Funktion (im schnellsten Fall) 100 Mal gleichzeitig
> ausgeführt?
>
> Meinen Untersuchungen nach, wird die Funktion sequentuell abgearbeitet
> (allerdings habe ich FLUSH nich versucht); welche Konzepte verfolgt
> ihr um ein paralleles Abarbeiten zu erreichen?


Sehe und lese:
http://php.net/manual/de/function.flush.php

>
> Grüsse
> Oliver
>
> Ziel:
> Die Funktion- Zitierten Text ausblenden -


Danke Mathias; ich denke ich sollte nun meine Idee umsetzen können:
FLUSH war, was ich suchte.
(und sonst komm ich wieder) ;-)

Grüsse
Oliver
Mit Zitat antworten
 
Antwort


Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen
Es ist dir nicht erlaubt, auf Beiträge zu antworten
Es ist dir nicht erlaubt, Anhänge anzufügen
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten

vB Code ist An
Smileys sind An
[IMG] Code ist An
HTML-Code ist Aus

Ähnliche Themen
Thema Erstellt von Forum Antworten Letzter Beitrag
Lastschrift-Rückgabe Martin Schneider Newsgroup de.etc.finanz.misc 7 04-02-2008 01:30 PM
Rückgabe BC 100? Martin Jungwirth Newsgroup de.etc.bahn.tarif+service 1 03-22-2008 06:22 PM
Rückgabe ausschliessen? René Haar Newsgroup de.soc.recht.misc 9 10-27-2007 11:48 PM
Rückgabe von Referenzen Timo Wagner Newsgroup de.comp.lang.iso-c++ 10 10-23-2007 06:03 PM
[Amazon] Rückgabe Christian Buhtz Newsgroup de.markt.misc 3 09-15-2007 12:02 PM


Alle Zeitangaben in WEZ. Es ist jetzt 01:27 AM Uhr.





Powered by: vBulletin Version 3.6.7 (Deutsch)
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Forum SEO by Zoints