PSD-Tutorials.de
Forum für Design, Fotografie & Bildbearbeitung
Tutkit
Agentur
Hilfe
Kontakt
Start
Forum
Aktuelles
Besonderer Inhalt
Foren durchsuchen
Tutorials
News
Anmelden
Kostenlos registrieren
Aktuelles
Suche
Suche
Nur Titel durchsuchen
Von:
Menü
Anmelden
Kostenlos registrieren
App installieren
Installieren
JavaScript ist deaktiviert. Für eine bessere Darstellung aktiviere bitte JavaScript in deinem Browser, bevor du fortfährst.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen
alternativen Browser
verwenden.
Antworten auf deine Fragen:
Neues Thema erstellen
Start
Forum
Sonstiges
Webdesign, Webentwicklung & Programmierung
PHP, Javascript, jQuery, Ajax, nodeJS, MySQL...
gleichzeitige Öffnung zweier HTTP-Verbindungen via fsockopen?
Beitrag
<blockquote data-quote="Christian" data-source="post: 884909" data-attributes="member: 3735"><p>Hallo!</p><p></p><p>Ich habe vor (ob es klappt? keine Ahnung!) 2 HTTP-Verbindungen gleichzeitig über fsock herzustellen, allerdings hab ich keine Ahnung wie ich das realisieren sollte, einen kleinen Ansatz habe ich jedoch schon:</p><p>[php]<?</p><p>$socket1 = @fsockopen( $ResolvedIpAddress1, 80, $errno1, $errstr2, 3 );</p><p>$socket2 = @fsockopen( $ResolvedIpAddress2, 80, $errno1, $errstr2, 3 );</p><p></p><p>if( $socket ){</p><p> stream_set_timeout( $socket1, 360000 );</p><p> stream_set_timeout( $socket2, 360000 );</p><p></p><p> #Daten aufbereiten</p><p> $send1 = "GET $FilePath1 HTTP/1.0\r\n"."\r\n";</p><p> $send2 = "GET $FilePath2 HTTP/1.0\r\n"."\r\n";</p><p></p><p> #Anfrage an Adresse schicken</p><p> @fwrite( $socket1, $send1 );</p><p> @fwrite( $socket2, $send2 );</p><p></p><p> $Buffer1 = null;</p><p> $Buffer2 = null;</p><p> $perc1 = false;</p><p> $perc2 = false;</p><p> $progress1 = 0;</p><p> $progress2 = 0;</p><p> </p><p> #Ergebnis auslesen</p><p> while( !@feof( $socket1 ) && !@feof( $socket2 ) ){</p><p> if(!@feof( $socket1) ){</p><p> $thisUselessBuffer1 = @fgets( $socket1, 8192 );</p><p> }</p><p> if(!@feof( $socket2 ) ){</p><p> $thisUselessBuffer2 = @fgets( $socket2, 8192 );</p><p> }</p><p> </p><p> #zum bestimmen des Ende des Headers</p><p> if( strtolower( $thisUselessBuffer1 ) == "\r\n" && !$perc ) $perc1 = true;</p><p> if( strtolower( $thisUselessBuffer2 ) == "\r\n" && !$perc ) $perc2 = true;</p><p> </p><p> #Ladebalken (optional)</p><p> if(USE_GAUGE && ($perc1 || $perc2)){</p><p> $oldProgress1 = $progress1;</p><p> $oldProgress2 = $progress2;</p><p> $progress1 = (int) str_replace("\r\n", "", $thisUselessBuffer1 );</p><p> $progress2 = (int) str_replace("\r\n", "", $thisUselessBuffer2 );</p><p> </p><p> # wb_set_value teilt dem browser via ob_flush & jscript mit, welcher Ladebalken wieviel % aufweist,</p><p> # sobald progress[N] > oldProgress[N] ist</p><p> # als Referenz, wieviel % der Ladestatus eines sockets ist,</p><p> # wird vom aufgerufenen Link ebenfalls via ob_flush() eine Prozentzahl des Fortschritts</p><p> # an $thisUselessBuffer[N] übertragen, z.B.: 55\r\n = 55%</p><p> if( is_numeric( $progress1 ) && $oldProgress1 < $progress1 ) wb_set_value( $ProgressBar1, $progress1 );</p><p> if( is_numeric( $progress2 ) && $oldProgress2 < $progress2 ) wb_set_value( $ProgressBar2, $progress2 );</p><p> }</p><p></p><p> $Buffer1 .= $thisUselessBuffer1;</p><p> $Buffer2 .= $thisUselessBuffer2;</p><p> </p><p> }</p><p></p><p> #Verbindung schließen</p><p> @fclose( $socket1 );</p><p> @fclose( $socket2 );</p><p>}</p><p></p><p>?>[/php]</p><p>Erklärung:</p><p>Ich habe es mir so gedacht, dass ich 2 Verbindungen direkt aufeinanderfolgend via fsockopen herstelle und dann in einer Schleife solange bis beide !@feof 's erreicht sind, auslese.</p><p>Bei einer Verbindung klappt es (natürlich), ich hab jetzt auf die schnelle das mal so umgeschrieben, wie es mein erster Ansatz wäre, getestet ist es jedoch nicht.</p><p>Meine Frage ist: </p><p>Hat das überhaupt Sinn, oder gibt es "elegantere" Lösungen?</p><p>PS: Die Variablennamen sind natürlich freundlich gesagt scheiße ausgewählt, sollte der Ansatz Sinn haben, würde ich natürlich mit Arrays und Schleifen arbeiten, aber bevor ich da Arbeit reinstecke wollte ich mal nachfragen, ob es überhaupt Sinn macht, oder gar möglich ist.</p><p></p><p>Grüße</p><p>Christian</p></blockquote><p></p>
[QUOTE="Christian, post: 884909, member: 3735"] Hallo! Ich habe vor (ob es klappt? keine Ahnung!) 2 HTTP-Verbindungen gleichzeitig über fsock herzustellen, allerdings hab ich keine Ahnung wie ich das realisieren sollte, einen kleinen Ansatz habe ich jedoch schon: [php]<? $socket1 = @fsockopen( $ResolvedIpAddress1, 80, $errno1, $errstr2, 3 ); $socket2 = @fsockopen( $ResolvedIpAddress2, 80, $errno1, $errstr2, 3 ); if( $socket ){ stream_set_timeout( $socket1, 360000 ); stream_set_timeout( $socket2, 360000 ); #Daten aufbereiten $send1 = "GET $FilePath1 HTTP/1.0\r\n"."\r\n"; $send2 = "GET $FilePath2 HTTP/1.0\r\n"."\r\n"; #Anfrage an Adresse schicken @fwrite( $socket1, $send1 ); @fwrite( $socket2, $send2 ); $Buffer1 = null; $Buffer2 = null; $perc1 = false; $perc2 = false; $progress1 = 0; $progress2 = 0; #Ergebnis auslesen while( !@feof( $socket1 ) && !@feof( $socket2 ) ){ if(!@feof( $socket1) ){ $thisUselessBuffer1 = @fgets( $socket1, 8192 ); } if(!@feof( $socket2 ) ){ $thisUselessBuffer2 = @fgets( $socket2, 8192 ); } #zum bestimmen des Ende des Headers if( strtolower( $thisUselessBuffer1 ) == "\r\n" && !$perc ) $perc1 = true; if( strtolower( $thisUselessBuffer2 ) == "\r\n" && !$perc ) $perc2 = true; #Ladebalken (optional) if(USE_GAUGE && ($perc1 || $perc2)){ $oldProgress1 = $progress1; $oldProgress2 = $progress2; $progress1 = (int) str_replace("\r\n", "", $thisUselessBuffer1 ); $progress2 = (int) str_replace("\r\n", "", $thisUselessBuffer2 ); # wb_set_value teilt dem browser via ob_flush & jscript mit, welcher Ladebalken wieviel % aufweist, # sobald progress[N] > oldProgress[N] ist # als Referenz, wieviel % der Ladestatus eines sockets ist, # wird vom aufgerufenen Link ebenfalls via ob_flush() eine Prozentzahl des Fortschritts # an $thisUselessBuffer[N] übertragen, z.B.: 55\r\n = 55% if( is_numeric( $progress1 ) && $oldProgress1 < $progress1 ) wb_set_value( $ProgressBar1, $progress1 ); if( is_numeric( $progress2 ) && $oldProgress2 < $progress2 ) wb_set_value( $ProgressBar2, $progress2 ); } $Buffer1 .= $thisUselessBuffer1; $Buffer2 .= $thisUselessBuffer2; } #Verbindung schließen @fclose( $socket1 ); @fclose( $socket2 ); } ?>[/php] Erklärung: Ich habe es mir so gedacht, dass ich 2 Verbindungen direkt aufeinanderfolgend via fsockopen herstelle und dann in einer Schleife solange bis beide !@feof 's erreicht sind, auslese. Bei einer Verbindung klappt es (natürlich), ich hab jetzt auf die schnelle das mal so umgeschrieben, wie es mein erster Ansatz wäre, getestet ist es jedoch nicht. Meine Frage ist: Hat das überhaupt Sinn, oder gibt es "elegantere" Lösungen? PS: Die Variablennamen sind natürlich freundlich gesagt scheiße ausgewählt, sollte der Ansatz Sinn haben, würde ich natürlich mit Arrays und Schleifen arbeiten, aber bevor ich da Arbeit reinstecke wollte ich mal nachfragen, ob es überhaupt Sinn macht, oder gar möglich ist. Grüße Christian [/QUOTE]
Bilder bitte
hier hochladen
und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Zitate einfügen…
Authentifizierung
Wenn ★ = 12, ◇ = 4 und die Hälfte von ★ zu ◇ addiert wird, was ist das Ergebnis?
Antworten
Start
Forum
Sonstiges
Webdesign, Webentwicklung & Programmierung
PHP, Javascript, jQuery, Ajax, nodeJS, MySQL...
gleichzeitige Öffnung zweier HTTP-Verbindungen via fsockopen?
Oben