zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Apache, mehrfache identische CGI-Abfragen

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 28.03.2009, 11:59
Benutzerbild von Scheppertreiber
Chaot und Nonkonformist.
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 13.03.2007
Ort: Steinmark im Spessart
Beiträge: 7.458
Scheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein Lichtblick
Standard Apache, mehrfache identische CGI-Abfragen

Servus,

wir haben bei einem Kunden Verbindungsabbrüche und merkwürdige Timeouts.
Um herauszubekommen ob's an meiner Software oder irgendeinem randalierenden
Switch oder Kabel liegt, habe ich die Programmausführung eines Programms
getracet.

Dazu schreibe ich bei jedem Aufruf über CGI in ein nur für diesen Lauf bestimmtes
Logfile was das Programm gerade macht (imn etwa file_timestamp_nr.prt damit
sich die Dateinamen nicht überschneiden können).

Mir ist jetzt aufgefallen, daß, wenn ich das schnell hintereinander anklicke (so,
daß sich identische CGI-aufrufe ergeben), das gerade laufende Programm nicht
fertig wird.

Frage: Kann der Apache ein laufendes CGI in so einem Fall beenden ?
__________________
Grüße aus dem Spessart, Joe

{ table-layout: biertischistbesser; }
Der Mausinator
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 28.03.2009, 12:51
Benutzerbild von mantiz
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.02.2007
Beiträge: 2.843
mantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz sein
Standard

Wenn ich das richtig verstehe erhält das CGI eine Art ID wenn es gestartet wird, und Du möchtest, dass das CGI, wenn es ein zweites Mal aufgerufen wird das vorherige mit der gleichen ID beendet und dann seinen eigenen Lauf fortsetzt.

Wenn ich das so richtig verstanden habe, dann könnte man z.B. in einem Temp-Dir eine Datei mit der ID anlegen und dort die Nummer des Prozesses speichern, der das CGI mit der gegebenen ID ausführt.

Wenn nun das zweite CGI eine Datei mit der eigenen ID findet, dann kann dieses über die Prozess-ID das erste CGI beenden (z.B. per kill -9) und seine eigene Prozess-ID dort hineinschreiben und dann normal weitermachen.

Eine Lösung via Apache fällt mir nicht ein.
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 28.03.2009, 12:56
Benutzerbild von Scheppertreiber
Chaot und Nonkonformist.
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 13.03.2007
Ort: Steinmark im Spessart
Beiträge: 7.458
Scheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein Lichtblick
Standard

Läuft unter win2k/xp.

Nein, anscheinend beendet der Apache genau diesen ersten Aufruf und läßt
den zweiten fertig laufen. Es beeinflußt nicht andere Anfragen mit dem gleichen
Programm. Filtert ein Apache mehrfache identische abfragen ?
__________________
Grüße aus dem Spessart, Joe

{ table-layout: biertischistbesser; }
Der Mausinator
Mit Zitat antworten
  #4 (permalink)  
Alt 28.03.2009, 13:08
Benutzerbild von mantiz
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.02.2007
Beiträge: 2.843
mantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz sein
Standard

Ach so, ich dachte es geht genau darum den ersten Aufruf beenden zu wollen.

Mir ist nicht bekannt, dass ein laufender Prozess abgebrochen wird, wenn ein 2. identischer Request eintrifft, würde imo auch keinen Sinn ergeben, da ansonsten stark besuchte Seiten ja ständig Probleme haben dürften.

Existiert diese Datei nur momentan zu Debug-Zwecken, oder wird diese immer verwendet?
Kann es vielleicht sein, dass der 2. Prozess irgendwas verändert, so dass beim ersten Prozess ein Fehler verursacht wird und somit abbricht?

Vielleicht setzt der 2. Prozess einen flock, womit der erste nicht rechnet, und dadurch beendet wird?
Mit Zitat antworten
  #5 (permalink)  
Alt 28.03.2009, 13:14
Benutzerbild von Scheppertreiber
Chaot und Nonkonformist.
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 13.03.2007
Ort: Steinmark im Spessart
Beiträge: 7.458
Scheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein Lichtblick
Standard

Vermutlich kollidiert das irgendwo und das erste Programm haut es raus.
Ich habe aber an Stellen wo es knallen könnte (zB fopen()), entsprechende
Fehlermeldungen.

Von der Logik her macht's der Indianer ja richtig ...
__________________
Grüße aus dem Spessart, Joe

{ table-layout: biertischistbesser; }
Der Mausinator
Mit Zitat antworten
  #6 (permalink)  
Alt 28.03.2009, 14:03
Benutzerbild von mantiz
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.02.2007
Beiträge: 2.843
mantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz sein
Standard

Ich glaub', ich habe das Problem noch nicht erkannt.

Z.B. verstehe ich nicht, warum es korrekt sein sollte, dass der Apache einen vorherigen Request abbricht, nur, weil es einen anderen, identischen Request gibt.
Selbst wenn der vom gleichen Client zur gleichen Zeit kommt, kann es doch sein, dass genau das gewünscht ist.
Der Apache sollte doch eigentlich für den zweiten Request einen eigenen Prozess starten und die beiden laufen parallel ab.
Mit Zitat antworten
  #7 (permalink)  
Alt 28.03.2009, 14:15
Benutzerbild von Scheppertreiber
Chaot und Nonkonformist.
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 13.03.2007
Ort: Steinmark im Spessart
Beiträge: 7.458
Scheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein Lichtblick
Standard

Da der Request vom gleichen Client kommt, wäre das schon plausibel.
Ich löse das Tracen mal etwas feiner auf ...
__________________
Grüße aus dem Spessart, Joe

{ table-layout: biertischistbesser; }
Der Mausinator
Mit Zitat antworten
  #8 (permalink)  
Alt 29.03.2009, 12:19
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Es gibt keine identischen Requests, zwei Requests sind immer unterschiedlich.
Ich vermute du meinst mit identisch, dass bei dir im Programm der gleiche Timestamp benutzt wird. Das kannst du wahrschienlich vermeiden, wenn du einen höher auflösenden Timer verwendest. PHP oder auch Perl bieten einen der in Mikrosekunden bereich auflöst. Das sollte für deinen Zweck reichen.
Mit Zitat antworten
  #9 (permalink)  
Alt 29.03.2009, 16:22
Benutzerbild von Scheppertreiber
Chaot und Nonkonformist.
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 13.03.2007
Ort: Steinmark im Spessart
Beiträge: 7.458
Scheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein Lichtblick
Standard

Gerade time() bietet das leider nicht. Lies mal nach
Die Requests sind wirklich identisch.
__________________
Grüße aus dem Spessart, Joe

{ table-layout: biertischistbesser; }
Der Mausinator
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 29.03.2009, 17:45
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Natürlich sind Request nicht identisch, nur dein Logfile ist der gleiche, oder?

Und ich rede nicht von time, ich weiß ja nicht in welcher Sprache deine Anwendung ist, aber in PHP gibt es microtime() in Perl das Modul Time::HiRes, usw.
Mit Zitat antworten
Sponsored Links
Antwort


Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Apache 2, virtual hosts Scheppertreiber Serveradministration und serverseitige Scripte 0 31.03.2008 19:32


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:20 Uhr.