Ankündigung

Einklappen
Keine Ankündigung bisher.

fsockopen - nur eine Verbindung gleichzeitig?

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • fsockopen - nur eine Verbindung gleichzeitig?

    Hallo zusammen,

    Ich habe folgendes verwunderliches Problem:

    Wenn auf meinem Server (IIS 6, PHP 5.3.3, FastCGI) mehrere PHP-Skripts gleichzeitig aufgerufen werden, die fsockopen benutzen, so werden diese nacheinander und nicht gleichzeitig abgearbeitet.

    d.h.
    Ich rufe (z.B. per Ajax) gleichzeitig skript1.php, skript2.php und skript3.php auf, die mit Hilfe von fsockopen jeweils eine Verbindung zu verschiedenen Server öffnet.
    Dann scheint skript2.php erst zu starten wenn skript1.php durchgelaufen ist und skript3.php erst wenn skript2.php durchgelaufen ist.

    Woran liegt das?

    - Kann PHP nur ein Skript gleichzeitig ausführen?
    - Kann PHP nur eine fsockopen gleichzeitig ausführen? (Wird bspw. immer an den gleichen lokalen Port gebunden)
    - Fehlt eine Einstellung in der php.ini oder in den IIS-Einstellungen?
    - Macht FastCGI-Probleme?
    - Könnte es eine generelle Firewall-Problematik sein (Server sitzt hinter einer Hardware-Firewall (NAT); andere Programme auf dem Server können aber natürlich gleichzeitig Internet-Verbindung nach außen aufbauen)

    Hat jemand schon mal was ähnliches gehabt.

    Danke schon mal für die Hilfe

    Gruß

    Oli4


  • #2
    PHP: pcntl_fork - Manual

    Wolf29
    while (!asleep()) sheep++;

    Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

    Kommentar


    • #3
      Oha du bist aber schnell

      Ich verstehe aber leider die Antwort nicht ganz:

      1. Frage:
      Muss die Prozess-Verzweigung nicht eigentlich früher passieren?

      Also ich meine:
      script1.php baut nur eine Verbindung zu 91.x.x.x auf.
      script2.php baut nur eine Verbindung zu 92.x.x.x auf.

      Wenn ich jetzt http://localhost/script1.php und http://localhost/script2.php gleichzeitig aufrufe, scheinen die beiden Skripts nacheinander und nicht gleichzeitig ausgeführt zu werden.

      Die Prozessverzweigung müsste also meines Erachtens auf Server-Ebene (Apache, IIS) passieren und nicht erst im PHP-Skript.

      Oder übersehe ich etwas?



      2. Frage:
      Gibt es PCNTL auch für den IIS. Im Manual steht, dass nur Unix-Basis untersützt wird.

      Kommentar


      • #4
        Das Problem war anscheinend die Session:

        Die Session bleibt gesperrt während Ablauf des Skripts.

        Durch session_write_close();

        wird die Session-Variable wieder frei gegeben:
        PHP: session_write_close - Manual

        Dann können andere Skripts wieder drauf zugreifen.

        Danke für die Hilfe.

        Gruß Oli4

        Kommentar


        • #5
          Thema geschlossen - Crossposting
          fsockopen - nur eine Verbindung gleichzeitig? - SELFPHP Forum
          [PHP]if ($var != 0) {
          $var = 0;
          }[/PHP]

          Kommentar

          Lädt...
          X