in laufende whileschleife eingreifen - möglich?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • in laufende whileschleife eingreifen - möglich?

    Hi meine Frage ist ganz kurz heute =)


    Kann ich in eine laufende While-Schleife neue Werte einbringen?

    Also von aussen, und nicht über zugriff zu bzw einer mysql

    schicke per POST daten an mein script wo die while derzeit läuft,
    ist es dann möglich die daten aufzugreifen ohne das script neustarten zu müssen.


    Vielen Dank

    Chris

  • #2
    Re: in laufende whileschleife eingreifen - möglich?

    Original geschrieben von Chris2k6
    Kann ich in eine laufende While-Schleife neue Werte einbringen?

    Also von aussen, und nicht über zugriff zu bzw einer mysql
    Kannst du bitte mal verständlich erklären, was du damit meinst?
    (Die Betonung liegt bei dieser Frage auf dem Wort "verständlich".)
    schicke per POST daten an mein script wo die while derzeit läuft,
    ist es dann möglich die daten aufzugreifen ohne das script neustarten zu müssen.
    Siehe oben - wie und wo "läuft" derzeit deine Whileschleife in einem Script, an welches du dann während der Laufzeit zusätzliche POST-Daten schicken willst?


    Es macht stark den Eindruck, als ob du die Funktionsweise von PHP im Umfeld von Client <-> Webserver noch nicht mal ansatzweise verstanden hättest.
    Oder ich bin nicht in der Lage, deine Problembeschreibung zu verstehen - dann werde bitte deutlicher.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      ok sorry hier mein code,soll nen chatclient werden, nur der list bisher nur aus, aber ich bekomme es nicht hin das ich damit schreiben kann.

      ich muss doch irgendwie in der whileschleife auch zum schreiben kommen, oder seh ich das total falsch?

      Code:
      <?php
      session_start();
      ?>
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
          "http://www.w3.org/TR/html4/loose.dtd">
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
      <title>Chat-Client</title>
      </head>
      
      <body>
      
      	<?php
      	
      	// damit es keinen Timeout gibt
      	set_time_limit (0); 
      	
      	$nickname = $_SESSION['nickname'];
      		
      	// Ip und Port
      	$address = 'zensiert'; 
      	$port = zensiert; 
      	
      	// Erzeugt einen TCP Stream socket 
      	$sock = socket_create(AF_INET, SOCK_STREAM, 0);
      	
      	// verbindet zu dem Serversocket
      	if(socket_connect($sock,$address,$port)){
      		echo "<br>Erfolgreich zum Server verbunden";
      	}else{
      		echo "<br>Verbindung fehlgeschlagen";
      	 }
       
      // Liest die ersten Zeichen testweise aus
      
       	$input = socket_read($sock,1024);
      	echo "<br>".$input;
      
      	$output = "/nick ".$nickname;
      	
      	if(($bytes = socket_write($sock,$output)) >0){
      		echo "<br>es wurden ".$bytes." Bytes geschrieben";
      	}else{
      		echo "<br>es wurden 0 geschrieben";
      	 }
      	 
      	 echo "<BR>letzte Fehlermeldung: ".socket_strerror(socket_last_error());
      	 socket_clear_error();
      	 
      while(true){
          if (ob_get_level() == 0) ob_start();
      	$read = array($sock);
      	$write = array($sock);
      	if (false === ($num_changed_sockets =
                                       socket_select ( $read,$write,$except = NULL, 0))){
      		echo "<br>Fehler beim Aufruf/Bedingung von socket_select";
      	}else if ($num_changed_sockets > 0){
      		
      		if(in_array($sock,$read)){
      			$input = socket_read($sock,1024);
      			echo "<br>".$input;
      			
      		}
      		// folgend ist der Weg zum Schreiben frei, wenn die Bedingung = true ist
      		if(in_array($sock,$write)){
      			$output = "\n";
      			if(($bytes = socket_write($sock,$output)) >0){
      			}else{
      				echo "Es wurde nichts gesendet";
      			}
      		}
      			
      	} else echo "<br>num_changed_sockets: ".$num_changed_sockets;
      	
      	   ob_flush();
             flush();
             sleep(1);
      
      }
      
      ?>
      
      </body>
      </html>
      Zuletzt geändert von wahsaga; 10.01.2006, 11:55.

      Kommentar


      • #4
        Original geschrieben von Chris2k6
        soll nen chatclient werden,
        *seufz*, wieder mal das Thema ...

        Was ist so schwer daran einzusehen, dass das verbindungslose HTTP für einen Chat äußerst ungeeignet ist, und damit auch PHP als Sprache zur Ralisierung so ziemlich ausscheidet ...?

        nur der list bisher nur aus, aber ich bekomme es nicht hin das ich damit schreiben kann.

        ich muss doch irgendwie in der whileschleife auch zum schreiben kommen, oder seh ich das total falsch?
        Du hast eine Endlosschleife programmiert, damit dein Script endlos weiterläuft - so gut, so schlecht. (Wenn jeder User der den Chat besucht eine solche Scriptinstanz startet - wann und wie beendest du diese eigentlich wieder ...?)
        Ein PHP-Script hat alle seine über POST, GET oder COOKIE kommenden Daten schon längst erhalten, bevor es losläuft.
        Da jetzt also per POST noch mal eben Daten während der Laufzeit in diese Scriptinstanz "reinschieben" zu wollen, ist quasi unmöglich. (Warum wagt sich jemand an die Programmierung eines Chats, wenn ihm offenbar noch nicht einmal grundlegende Funktionsweisen der verwendeten Techniken klar sind?)

        Du müsstest dir also wenn schon einen anderen Weg suchen, um Daten vom Client zu empfangen und sie deinem Script bekannt zu machen - beispielsweise, in dem du dazu ein zweites Script verwendest, welches aus einem Formular die Daten in Empfang nimmt und sie in eine Datenbank o.ä. schreibt, wo sie dann auch das erste, bereits (eit Ewigkeiten) laufende Script zwischendurch immer mal wieder auslesen kann.


        Aber alle diese theoretischen Überlegungen ändern nichts daran, dass ein Chat auf PHP-Basis von der Performance und dem Traffic her absoluter Unfug ist - also nach wie vor mein Rat, nein sogar eher meine Bitte: Lass den Quatsch.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          geb ich dir ja voll recht, aber ich MUSS es machen , Praktikum..
          ich hab bereits in java einen chat programmiert

          ich finds total scheisse mit php

          die funktionen sind mir bewusst, also das post , get cookies, sessions,ect schon vorher ausgelesen wird ect

          hm ich werd jetzt mir was basteln, keine lust mehr nur rumzugrübeln

          ich werd ne 2 socket lösung machen

          eine die nur ausliest, eine die nur sendet, und beide werden sich kennen

          wenn ich da ne datenbank zwischenhaue, dann wird mir mein cheff wieder sagen, das zuviel traffic entsteht

          naja trotzdem danke!!!

          Kommentar


          • #6
            *aufgreif*

            Vorweg: Beide Varianten sind doof...aber für nen Chef reichts

            1. While laufen lassen und neue Werte einbringen, in dem du einfach die Werte in ne Datei schreibst und ausließt -> is aber ultra doof, funzt aber.

            2. Chatfenster refreshed alle 5-10 Sekunden.
            Sunshine CMS
            BannerAdManagement
            Borlabs - because we make IT easier
            Formulargenerator [color=red]Neu![/color]
            Herkunftsstatistik [color=red]Neu![/color]

            Kommentar

            Lädt...
            X