Alain: sleep(2); bei gleichzeitigen aufrufen?

Hallo und wieder back,
Erstmal freuts mich,dass das forum wieder da ist und möchte alle nochmals herzlich
grüssen.
So nun zur Frage:
Ich wollte wissen ob ein script trotz verzögerung von "sleep(2);" (2 sekunden warten) einen mehrfach zugriff ermöglicht
 bzw. könnte ein perlscript trotzdem im sleep(2) modus von einem anderen Pc aufgerufen werden können?
Oder müsste der andere erst mal warten bis die sleep funktion abgelaufen ist?

Gruss vom Alain

--
...wenn das gehirn so einfach wäre,es zu vestehen,
wären wir zu dumm um es zu begreifen...
  1. Hallo Alain,

    ich kann Dir das nur für PHP beantworten.

    Die mit sleep() eingestellte "Ruhezeit" gilt immer nur für den laufenden Prozess. Wenn das Script nun ein zweites Mal aufgerufen wird, dann wird ja eine neue Instanz davon gebildet. Sonst würde ja ein neuer Aufruf mit den Variablen und dem Befehlszähler des vorigen arbeiten.

    Außerdem erhält es einen völlig anderen Antwortport (auf dem Client) zugeordnet.

    Die Max_Execution_Time wird davon übrigens nicht gestört. Die registriert nur die reine Ausführungszeit, also _nicht_ die Schlafzeit eines Scriptes.

    Man kann also durch eine sleep()-Schleife ein Script "in den Hintergrund" stellen. Bis die 30sec MaxExTime (standard) erreicht sind, können dadurch Tage vergehen. Kommt darauf an, wie teuer (zeitaufwändig)die Aussprungbedingung in der Schleife (sollte man schon haben) ist.

    Grüße

    Tom

    1. Hallo danke für die info,

      Die mit sleep() eingestellte "Ruhezeit" gilt immer nur für den laufenden Prozess. Wenn das Script nun ein zweites Mal aufgerufen wird, dann wird ja eine neue Instanz davon gebildet. Sonst würde ja ein neuer Aufruf mit den Variablen und dem Befehlszähler des vorigen arbeiten.

      Man kann also durch eine sleep()-Schleife ein Script "in den Hintergrund" stellen. Bis die 30sec MaxExTime (standard) erreicht sind, können dadurch Tage vergehen. Kommt darauf an, wie teuer (zeitaufwändig)die Aussprungbedingung in der Schleife (sollte man schon haben) ist.

      Ich wollte eigentlich damit erreichen,dass ein cgi nicht (übertrieben gesagt) tausend mal gleichzeitig in einer sekunde ausgeführt werden darf.
      Na dann ist "sleep" wohl das falsche.

      Gruss vom Alain

      --
      ...wenn das gehirn so einfach wäre,es zu vestehen,
      wären wir zu dumm um es zu begreifen...
      1. Hallo Alain,

        indirekt erreichst Du das damit ja auch.

        Der Apache bedient in der Standardkonfiguration maximal 150 Clients gleichzeitig. Wenn Dein Script nun 2 sec. schläft, bevor es antwortet, dann können innerhalb der ersten Sekunde also nur 150 Aufrufen erfolgen, in der zweiten gar keiner und erst in der dritten wieder welche.

        Alles klar?

        Grüße

        Tom

        1. Moin!

          Der Apache bedient in der Standardkonfiguration maximal 150 Clients gleichzeitig. Wenn Dein Script nun 2 sec. schläft, bevor es antwortet, dann können innerhalb der ersten Sekunde also nur 150 Aufrufen erfolgen, in der zweiten gar keiner und erst in der dritten wieder welche.

          Prima. Dann muß man mit seinem Rechner gar nicht soviele Requests gleichzeitig absetzen, um den Rechner zu DoSsen. :)

          Alles klar?

          Ebenso. :)

          - Sven Rautenberg

          --
          ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
          1. Selber Moin!

            Der Apache bedient in der Standardkonfiguration maximal 150 Clients gleichzeitig. Wenn Dein Script nun 2 sec. schläft, bevor es antwortet, dann können innerhalb der ersten Sekunde also nur 150 Aufrufen erfolgen, in der zweiten gar keiner und erst in der dritten wieder welche.

            Prima. Dann muß man mit seinem Rechner gar nicht soviele Requests gleichzeitig absetzen, um den Rechner zu DoSsen. :)

            Alles klar?

            Ebenso. :)

            Geeenau!

            Ich habe das allerdings noch nie beobachten dürfen, was passiert, wenn der Apache dicht macht. Bekommt man da wenigstens ne Warnung zurück auf den Client?

            Besser wäre es da ja sicher, die Bandbreite pro Client einzuschränken (siehe Struppi).

            Bei einer typischen Laufzeit von ca. 0,08s per Script (ohne Filesystemzugriffe) kann man sich ja ausrechnen, wieviele User sonst "gleichzeitig" zugreifen können.

            Ist dann sicher noch spannend, wieviele Output-Buffers der Apache bereit hält; ob das auch nur 150 (standard) sind? Dann hängt es ja auch von der Übertragungsgeschwindigkeit ab.

            Und schlußendlich wird auch der Server irgendwann in die Knie gehen mit seinen Mega- oder Gigaflops

            Oder ? :-))

            Ca. letzte Grüße

            Tom

      2. Ich wollte eigentlich damit erreichen,dass ein cgi nicht (übertrieben gesagt) tausend mal gleichzeitig in einer sekunde ausgeführt werden darf.
        Na dann ist "sleep" wohl das falsche.

        Absolut. Was ist den daran verkehrt wenn dein Server versucht so schnell wie möglich alle request abzuhandeln? Werden deine Dateien zu heiß? ;-)

        Um eine Überlastung zu verhindern musst du den Server entsprechend konfigurieren, aber nicht (bzw. du erreichst das gegenteil damit) die Programme ausbremsen.

        Struppi.

        1. Hallo,

          Absolut. Was ist den daran verkehrt wenn dein Server versucht so schnell wie möglich alle request abzuhandeln? Werden deine Dateien zu heiß? ;-)

          z.B. wenn ich ein cgi habe,das beim aufruf(das nicht aufgerufen werden darf z.B. durch spam clients)
           den client sperrt bzw. einen eintrag (dies aber einmalig tut)in die htaccess datei tätigt und mir eine mail schickt vom eintrag...so und jetzt nehmen wir
          an der client ruft das script mehrmals in einer sekunde auf,was ja auch schon passiert ist,dann krieg ich 3 mails vom selben client,obwohl der eigentlich
          schon gesperrt sein sollte.
          Desshalb die idee mit sleep(2);
          :)

          Gruss vom Alain

          --
          ...wenn das gehirn so einfach wäre,es zu vestehen,
          wären wir zu dumm um es zu begreifen...
          1. Desshalb die idee mit sleep(2);

            Ich hatte mich auch schon gewundert, warum jemand sowas macht, aber das macht Sinn.

            Manchmal reicht die eigenen Fantasie nicht um sich alle Gemeinheiten des Internets sich vorstellen zu können ;-)

            Struppi.

            1. Hallo,

              Manchmal reicht die eigenen Fantasie nicht um sich alle Gemeinheiten des Internets sich vorstellen zu können ;-)

              soll dass etwa heissen dass ich gemein bin,wenn ich spamer davon abhalte mein
              mail.cgi zu benutzen (die er sowiso nicht nutzen kann) oder cracker davon abhalte
              meinen server zu exploiden um nach schwachstellen am server zu suchen?
              sorry aber da hast Du wahrscheinlich meine idee falsch verstanden.
              Gruss vom Alain

              --
              ..."Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." (Albert Einstein)
              1. soll dass etwa heissen dass ich gemein bin,wenn ich spamer davon abhalte mein
                mail.cgi zu benutzen (die er sowiso nicht nutzen kann) oder cracker davon abhalte
                meinen server zu exploiden um nach schwachstellen am server zu suchen?
                sorry aber da hast Du wahrscheinlich meine idee falsch verstanden.

                Das 2. natürlich

                Struppi.