mir: HILFE: Threads mit PHP

hallo welt!

brauche dringend ne lösung, um sämtliche vorgänge gleichzeitig durchführen zu können.
wenn ich mich nicht irre, dann nennt man das dann threads...

hab gehört, dass es mit php 5 möglich wäre.
kann mir jmd links zum thema nennen, o.ä.?

danke

ps: die vorgänge die durchgeführt werden sind im prinzip "nur" das laden von internetseiten in strings. leider geht dies momentan nur sehr langsam, da nach jeder anfrage wieder einige sekunden auf den zielhost gewartet werden muss, bis dieser antwortet.
würde man nun 50 seiten auf einmal anfordern, so könnten diese alle nach den paar sekunden bearbeitet werden. momentan geht es nur der reihe nach :-(

  1. ps: die vorgänge die durchgeführt werden sind im prinzip "nur" das laden von internetseiten in strings. leider geht dies momentan nur sehr langsam, da nach jeder anfrage wieder einige sekunden auf den zielhost gewartet werden muss, bis dieser antwortet.
    würde man nun 50 seiten auf einmal anfordern, so könnten diese alle nach den paar sekunden bearbeitet werden. momentan geht es nur der reihe nach :-(

    Ich dachte bisher, unterschiedliche Requests würden vom Server automatisch in mehreren Prozessen/Threads abgearbeitet. Lasse mich aber gerne eines Besseren belehren.

    Gruß,
    KonRad -

    --
    "Was Gott zusammengeführt hat ..." :: polithink.org -
    the politicultural e-zine :: http://www.polithink.org
    1. Hello,

      Ich dachte bisher, unterschiedliche Requests würden vom Server automatisch in mehreren Prozessen/Threads abgearbeitet. Lasse mich aber gerne eines Besseren belehren.

      ...aber dazu müssen sie ersteinmal abgesetzt werden. Ein Script arbeitet sequenziell, also ein Request folgt dem anderen.

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      1. Sup!

        Wenn die Inhalte von Platte geladen werden müssen, dann könnte das "gleichzeitige" Laden von verschiedenen Daten von verschiedenen Spuren der Platte die Operation unter Umständen sogar langsamer machen als das sequentielle Abarbeiten... und Threads verursachen auch ein wenig Overhead.

        Gruesse,

        Bio

        --
        Gnade - was bedeutet dieses Wort?
        1. Hello,

          Wenn die Inhalte von Platte geladen werden müssen, dann könnte das "gleichzeitige" Laden von verschiedenen Daten von verschiedenen Spuren der Platte die Operation unter Umständen sogar langsamer machen als das sequentielle Abarbeiten... und Threads verursachen auch ein wenig Overhead.

          Daran wird es beim Server wohl nicht liegen. Ich vermute mal, dass da auch Routing-Probleme vorliegen könnten. Muss er einfach mal ein ping absetzen und schauen, wieviel Millisekunden die Antwort braucht. Ich hatte neulich einen Vietnamesischen Server dran, der hat tatsächlich über eine Sekunde gebraucht, bis überhaupt was kam. Und dann klekkerte das so...

          Je öfter wir den nacher aufgerufen haben (von verschiedenen PCs über jeweils eigene ISDN-Zugänge ins Internet) desto schneller antwortete der. Ich denke, die Hobs müssen auch erst trainiert werden.

          Liebe Grüße aus http://www.braunschweig.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      2. ...aber dazu müssen sie ersteinmal abgesetzt werden. Ein Script arbeitet sequenziell, also ein Request folgt dem anderen.

        Na, das meinte ich nicht; ich meinte, daß die Serveranwendung für jedes Request an ein gg. Script ein neues Thread erstellt und somit die beiden Scriptaufrufe "unbehelligt" nebeneinander laufen.
        Aber wie gesagt, das habe ich nur mal gehört und weiß nicht, ob es stimmt.

        Gruß,
        KonRad -

        --
        "Was Gott zusammengeführt hat ..." :: polithink.org -
        the politicultural e-zine :: http://www.polithink.org
  2. Hi!

    brauche dringend ne lösung, um sämtliche vorgänge gleichzeitig durchführen zu können.
    wenn ich mich nicht irre, dann nennt man das dann threads...

    Ja, mit Threads kann man sowas realisieren.

    hab gehört, dass es mit php 5 möglich wäre.
    kann mir jmd links zum thema nennen, o.ä.?

    Da hast Du definitiv was falsches gehört ;-)
    In PHP5 gibt es keine Threads.
    Wenn es denn unbedingt parallel laufen soll, dann verwende mehrere Prozesse. Wobei Du einen Pool von Prozessen verwenden solltest, und nicht andauernd neue Prozesse starten. Hierbei helfen folgende PHP-Extensions:

    http://de3.php.net/pcntl
    http://de3.php.net/posix

    ps: die vorgänge die durchgeführt werden sind im prinzip "nur" das laden von internetseiten in strings. leider geht dies momentan nur sehr langsam, da nach jeder anfrage wieder einige sekunden auf den zielhost gewartet werden muss, bis dieser antwortet.

    Wie ist der Rechner der das Laden durchführt denn an das Internet angebunden? Eine DSL-Leitung z.B. ist bei sowas ein dicker Bremsklotz.

    würde man nun 50 seiten auf einmal anfordern, so könnten diese alle nach den paar sekunden bearbeitet werden. momentan geht es nur der reihe nach :-(

    Dann forke ein gewisse Anzahl weiterer Prozesse, und verteile die Aufgaben auf diese.

    Grüße
    Andreas