sleep(2); bei gleichzeitigen aufrufen?
Alain
- perl
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
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
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
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
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
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
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.
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
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.
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
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.