Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi ISAPI DLL Loader will keine großen DLL's (https://www.delphipraxis.net/75809-isapi-dll-loader-will-keine-grossen-dlls.html)

Mavarik 25. Aug 2006 09:01


ISAPI DLL Loader will keine großen DLL's
 
Hallo Zusammen!

Ich nehme für meine ISAPI.DLL's den "Egg-Loader" (wie sicherlich viele).

Das klapp ja auch prima, *.update hochladen, einmal aufrufen, fertig...

Leider klappt es ab einer bestimmten Größe, bzw. wenn ich irgend etwas in die DLL nehme, nicht mehr mit dem entladen!

Kennt einer dieses Problem oder hat einer von Euch eine Idee wonach ich suchen kann?

Grüsse Frank :coder:

sakura 25. Aug 2006 09:13

Re: ISAPI DLL Loader will keine großen DLL's
 
Gib mir noch ein bissle, dann veröffentliche ich heute Vormittag meinen Sourcecode, für genau ein solches Tool. Das Tool nutze ich seit Jahren erfolgreich ;)

...:cat:...

Mavarik 25. Aug 2006 09:27

Re: ISAPI DLL Loader will keine großen DLL's
 
Zitat:

Zitat von sakura
Gib mir noch ein bissle, dann veröffentliche ich heute Vormittag meinen Sourcecode, für genau ein solches Tool. Das Tool nutze ich seit Jahren erfolgreich ;)

...:cat:...

Mau!

Der Egg-Loader funktioniert ja - trotzdem werde ich mir Deine Lösung ansehen...

Aber ich befürchte, dass es am meiner DLL liegt. Die wird sich gegen das entladen weren...

Frank

sakura 25. Aug 2006 09:35

Re: ISAPI DLL Loader will keine großen DLL's
 
Zitat:

Zitat von Mavarik
Der Egg-Loader funktioniert ja - trotzdem werde ich mir Deine Lösung ansehen...

Das will ich doch hoffen ;)
Zitat:

Zitat von Mavarik
Aber ich befürchte, dass es am meiner DLL liegt. Die wird sich gegen das entladen weren...

Nun ja, dann kannst Du ja meine Version so anpassen, dass Du Deinen Filter vernünftig debuggen kannst.

Btw, stelle sicher, dass Deine DLL die Unit, solltest Du intern viel Stringhandling machen, auch wenn Du die nicht nach außen weitergibst, ShareMem nutzt und im Body die Variable Delphi-Referenz durchsuchenMultiThread setzt. Das erspart Dir sehr viele Probleme mit ISAPI Filtern.
Delphi-Quellcode:
begin
  IsMultiThread := True;
end.
...:cat:...

sakura 25. Aug 2006 09:44

Re: ISAPI DLL Loader will keine großen DLL's
 
Okay, das ging fix. Eine Dokumentation und einen Link findest Du in meinem Blogeintrag zum Thema ;)

...:cat:...

Mavarik 25. Aug 2006 09:44

Re: ISAPI DLL Loader will keine großen DLL's
 
Zitat:

Zitat von sakura
Das erspart Dir sehr viele Probleme mit ISAPI Filtern.
...:cat:...

Das ist keine Filter-DLL sondern eine "normale"

Frank

sakura 25. Aug 2006 09:45

Re: ISAPI DLL Loader will keine großen DLL's
 
Zitat:

Zitat von Mavarik
Das ist keine Filder-DLL sondern eine "normale"

Was meinst Du mit "normale", eine Extension?

...:cat:...

Mavarik 25. Aug 2006 09:47

Re: ISAPI DLL Loader will keine großen DLL's
 
emmm....

Ja?!

halt eine ?CGI? isapi.dll... Eben keine Filter-DLL.

Frank

sakura 25. Aug 2006 09:50

Re: ISAPI DLL Loader will keine großen DLL's
 
Zitat:

Zitat von Mavarik
emmm....
Ja?!
halt eine ?CGI? isapi.dll... Eben keine Filter-DLL.

Da sollte die Lösung ähnlich sein, gib mir ein bisschen Zeit ;)

...:cat:...

Mavarik 25. Aug 2006 09:56

Re: ISAPI DLL Loader will keine großen DLL's
 
PS.: Ich gehe davon aus, dass Du das gleiche Problem hast wie der Egg-Loader...

Beispiel:
Während des Upload's 500kb von 1MB sind schon open... Versucht der Loader auf die *.upd zuzugreifen und das funktioniert nicht...
Oder hast Du das besser gelößt?

Frank :coder:

sakura 25. Aug 2006 10:08

Re: ISAPI DLL Loader will keine großen DLL's
 
Zitat:

Zitat von Mavarik
Während des Upload's 500kb von 1MB sind schon open... Versucht der Loader auf die *.upd zuzugreifen und das funktioniert nicht...

Ah, ich verstehe ;)
Zitat:

Zitat von Mavarik
Oder hast Du das besser gelößt?

Jetzt schon, und die Extension-Loader ist gleich fertig. Btw, die Grund-Idee dafür stammt vom EggLoader, als dieser noch OpenSource war. Hat aber nicht mehr viel gemein damit.

...:cat:...

Mavarik 25. Aug 2006 10:20

Re: ISAPI DLL Loader will keine großen DLL's
 
Zitat:

Zitat von sakura
Jetzt schon, und die Extension-Loader ist gleich fertig. Btw, die Grund-Idee dafür stammt vom EggLoader, als dieser noch OpenSource war. Hat aber nicht mehr viel gemein damit.

...:cat:...

Cool... :dp: (U2)

sakura 25. Aug 2006 12:17

Re: ISAPI DLL Loader will keine großen DLL's
 
Zitat:

Zitat von Mavarik
Cool... :dp: (U2)

So, beide sind up-to-date und dann sollte auch Dein Problem behoben sein, hoffe ich.
Anleitung: http://delphi-notes.blogspot.com/200...oader-for.html

...:cat:...

Mavarik 25. Aug 2006 12:53

Re: ISAPI DLL Loader will keine großen DLL's
 
Zitat:

Zitat von sakura
So, beide sind up-to-date und dann sollte auch Dein Problem behoben sein, hoffe ich.
...:cat:...

So...

1. im bdsproj sind 2 Files angegeben, aber im Zip fehlt der FilterLoader

2. Das Upload-Problem ist gelößt, auch wenn ich im Source nicht gefunden habe, wie Du es gemacht hast.

3. Das meine DLL nicht entladen werden kann, besteht weiterhin, auch mit Deinem Loader...

4. Wenn ich Uses ShareMem hinzufüge, wird meine DLL überhaupt nicht mehr gelanden.

Noch ne Idee?

Grüsse Frank :coder:

sakura 25. Aug 2006 13:06

Re: ISAPI DLL Loader will keine großen DLL's
 
Zitat:

Zitat von Mavarik
1. im bdsproj sind 2 Files angegeben, aber im Zip fehlt der FilterLoader

Was meinst Du? Ich habe es gerade auf einem anderen PC entpackt und kompiliert. Keine Probleme. Außerdem ist das zweite ja nicht FilterLoader, sondern ExtensionLoader ;)
Zitat:

Zitat von Mavarik
2. Das Upload-Problem ist gelößt, auch wenn ich im Source nicht gefunden habe, wie Du es gemacht hast.

Siehe:
Delphi-Quellcode:
function CanAccessDLL: Boolean;
Zitat:

Zitat von Mavarik
3. Das meine DLL nicht entladen werden kann, besteht weiterhin, auch mit Deinem Loader...

Auch nicht nach einer Minute? Einfach etwas warten, das hat bei mir auch einen Moment gedauert.
Zitat:

Zitat von Mavarik
4. Wenn ich Uses ShareMem hinzufüge, wird meine DLL überhaupt nicht mehr gelanden.

Das galt für die Filter, nicht Deine Extension ;) Wenn Du ShareMem einfügst, dann musst Du auch die Datei borlndmm.dll aus dem BDS/BIN Verzeichnis deployen.

...:cat:...

Mavarik 25. Aug 2006 14:06

Re: ISAPI DLL Loader will keine großen DLL's
 
Zitat:

Zitat von sakura
Was meinst Du? Ich habe es gerade auf einem anderen PC entpackt und kompiliert. Keine Probleme. Außerdem ist das zweite ja nicht FilterLoader, sondern ExtensionLoader ;)

OK Mein Fehler!
Zitat:

Zitat von sakura
Siehe:
Delphi-Quellcode:
function CanAccessDLL: Boolean;

Alles klar, interessanter Ansatz... Das Funktioniert aber nicht wenn das ftp Programm den 1. Block weggeschrieben hat, oder?
Zitat:

Zitat von sakura
Auch nicht nach einer Minute? Einfach etwas warten, das hat bei mir auch einen Moment gedauert.

Eine Minute? Das hat bisher mit dem Egg-Loader nur zentel sekunden gedauert!

Frank :coder:

PS.: Was soll da so lange dauern? Es greift kein anderer zu!

sakura 25. Aug 2006 14:11

Re: ISAPI DLL Loader will keine großen DLL's
 
Zitat:

Zitat von Mavarik
Alles klar, interessanter Ansatz... Das Funktioniert aber nicht wenn das ftp Programm den 1. Block weggeschrieben hat, oder?

Das müsstest Du mal in Ruhe testen. Es kommt wohl auf die Implementierung des FTP Servers an, ob er einen Stream öffnet, oder immer nur kurz auf, dann anhängen, wieder zu, wieder auf... Aber dann kann man eh nichts machen, denke ich mal.
Zitat:

Zitat von Mavarik
Was soll da so lange dauern? Es greift kein anderer zu!

Ich kann es Dir nicht sagen, der Aufruf zu MSDN-Library durchsuchenFreeLibrary() hat bei mir ewig gedauert. Ich weiß nicht woran es lag. Eine Minute war jetzt bestimmt übertrieben, aber länger als 10 Sekunden hat es gedauert...

...:cat:...

Mavarik 28. Aug 2006 07:10

Re: ISAPI DLL Loader will keine großen DLL's
 
Zitat:

Zitat von sakura
Zitat:

Zitat von Mavarik
Alles klar, interessanter Ansatz... Das Funktioniert aber nicht wenn das ftp Programm den 1. Block weggeschrieben hat, oder?

Das müsstest Du mal in Ruhe testen. Es kommt wohl auf die Implementierung des FTP Servers an, ob er einen Stream öffnet, oder immer nur kurz auf, dann anhängen, wieder zu, wieder auf... Aber dann kann man eh nichts machen, denke ich mal.

Meine Ansatz wären:

1. Dateiname -> MyISAPI.Upd.Filesize
2. Upload mit MyISAPI.NEW und dann rename... Aber das geht ja immer...
Zitat:

Zitat von sakura
Ich kann es Dir nicht sagen, der Aufruf zu MSDN-Library durchsuchenFreeLibrary() hat bei mir ewig gedauert. Ich weiß nicht woran es lag. Eine Minute war jetzt bestimmt übertrieben, aber länger als 10 Sekunden hat es gedauert...

Hmm die Frage ist, was dem FreeLibrary() im Weg stehen kann... Geöffnete ADO Verbindung, offene Datei oder was auch immer... Ich befürchte, dass der free nicht funktioniert, weil ich irgend etwas in meiner DLL falsch gemacht habe...

Grüsse Frank

Mavarik 5. Sep 2006 09:08

Re: ISAPI DLL Loader will keine großen DLL's
 
Zitat:

Zitat von sakura
Ich kann es Dir nicht sagen, der Aufruf zu MSDN-Library durchsuchenFreeLibrary() hat bei mir ewig gedauert. Ich weiß nicht woran es lag. Eine Minute war jetzt bestimmt übertrieben, aber länger als 10 Sekunden hat es gedauert...

...:cat:...

OK Richtig...

Ich habe jetzt mal gewartet... Es hat ca 3 Minuten gedauert. Leider ist in dieser Zeit nicht nur das eine Web TOT, sondern alle Webs auf diesem Server. (Das kann ich mir natürlich nicht leisten)

Noch ne Idee?

Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz