Einzelnen Beitrag anzeigen

Rolf Frei

Registriert seit: 19. Jun 2006
647 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: HTTPApp.TWebResponse und Cookies

  Alt 10. Jun 2021, 15:54
Ich hatte gelesen, dass die ISAPI schneller wäre. Deshalb hatte ich gleich mit ISAPI angefangen.
Aber wenn es mit der CGI-EXE genauso geht, wäre das auch eine Alternative. Ich habe ja jetzt das Problem, dass ich IIS immer anhalten und neustarten muss. Das würde sich ja dann erübrigen, wie du oben geschrieben hattest.
Kann man die CGI-EXE genauso aufrufen, wie die ISAPI DLL? Kann man dann vielleicht auch noch Ausgaben erstellen, damit man für Tests sieht, was passiert?
ISAPI ist nur in der Theorie schneller, weil das ständige Laden entfällt. In der Praxis merkst du da keinen Unterschied, weil die exe vom IIS (oder OS?) gecacht wird. Eventuell wirst du beim ersten Aufruf einen winzigen Unterschied merken (wir reden hier von ein par ms), aber alle folgenden Aufrufe sind praktisch genauso schnell. Der Stress den man mit einer ISAPI DLL hat, ist mir das nicht wert.

Ja die CGI-EXE kannst du gleich aufrufen, nur halt die exe und nicht die dll. webserver/app/deineapp.exe/... anstatt webserver/app/deineapp.dll/...

Wenn du die exe oder dll nicht in der URL haben willst, müsstest du noch eine Umschreibregel im IIS definieren, die sowas macht: webserver/app/deineapp/...

OK, was ist denn dann die best practice dafür?
Oder anders gefragt: Was wäre das Pendant zu session_start(); und den $_SESSION['xxx'] Variablen von PHP. Einfach irgendwelche Werte als globale Variablen serverseitig in Delphi speichern ist wohl keine gute Idee, da ja jeder Seitenauruf einen eigenen Thread startet, wenn ich das richtig verstanden habe. Außerdem muss sich der Seitenaufruf ja mit einer Art Session-ID identifizieren.
Kann ich dir nicht so recht beantworten, kenne mich da mit PHP nicht aus, da ich bisher alles auch mit Delphi machen konnte. Ich führe bei mir eine eigene "Session" (DB-Tabelle mit weiteren Infos zur Sesssion), die ich als Session-ID Cookie und URL-Parameter mitliefere. in der Sesssion Tabelle halte ch alle Daten fest, die mit der Session zu tun haben, also in dienem Fall die Werte deiner Variablen. Diese Sessions haben einen Timeout, nachdem diese ungültig werden. Dann wird eine neue erstellt und wieder als Cookie und URL-Paramater geliefert. Will man die Session selber löschen (durch Abmelden des Benutzers), muss einfach ein leeres Session-ID Cookie gesendet werden. Dadurch ist die alte Session-ID im Browser nicht mehr gültig.

Geändert von Rolf Frei (10. Jun 2021 um 16:06 Uhr)
  Mit Zitat antworten Zitat