Schrift
[thread]632[/thread]

Virtuelle Hosts hinzufügen/löschen with a CGI: concerning Apache?s vhosts.conf file (Seite 2)



<< |< 1 2 >| >> 14 Einträge, 2 Seiten
renee
 2005-12-22 23:25
#6418 #6418
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Die Datei wird geschlossen, sobald die Variable ($vhosts) aus dem Scope fällt...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
ptk
 2005-12-23 01:30
#6419 #6419
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=murphy,22.12.2005, 19:27]Aber ist es wirklich garantiert, dass die Datei genau am Ende des Blockes, wenn der Referenzzähler für $vhosts auf Null fällt geschlossen wird, oder könnte es sein, dass das erst irgendwann später passiert? Ich habe nicht genug Ahnung von den Perl Interna um mir diese Frage selbst zu beantworten, hätte aber immer close von Hand aufgerufen, denn sicher ist sicher. Unter Java bekommt man mit ähnlichen Konstruktionen zum Beispiel Probleme, weil die Datei sonstwann geschlossen wird -- aber Java verwendet auch einen konservativen Garbagecollector und keine Referenzzähler.[/quote]
Es wird geschlossen, wenn die letzte Referenz auf das Filehandle verschwunden ist. Das kann durchaus nach Ende des Scopes passieren.

Perl6 wird eine "echte" Garbage Collection bekommen, aber auch hier wird sichergestellt, dass ein Objekt *sofort* aufgeräumt wird, wenn es nicht mehr gebraucht wird. D.h. bei jedem Blockende wird eine (effiziente) GC angestoßen (das war jedenfalls der Stand Anfang des Jahres).
murphy
 2005-12-23 02:36
#6420 #6420
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
[quote=ptk,22.12.2005, 23:30][...]
Es wird geschlossen, wenn die letzte Referenz auf das Filehandle verschwunden ist. Das kann durchaus nach Ende des Scopes passieren.
[...][/quote]
Das kann aber nur nach Ende des Scopes passieren, wenn ich zum Beispiel eine Referenz auf die Variable irgendwohin übergeben habe, oder?

Mir ging es hauptsächlich darum, zu wissen, ob das Filehandle sofort geschlossen wird, wenn sein Referenzzähler auf 0 fällt, oder ob Perl mitunter erst noch eine Tasse Kaffee trinkt, bevor es das Objekt, das nicht mehr referenziert wird, aufräumt. Bei "echten" Garbagecollectors kann das nämlich passieren, da man in der Regel nicht bei jedem Wechsel des lexikalischen Scopes eine komplette Collection laufen lassen will -- das wäre echt ineffizient.
When C++ is your hammer, every problem looks like your thumb.
ptk
 2005-12-23 23:34
#6421 #6421
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=murphy,23.12.2005, 01:36][quote=ptk,22.12.2005, 23:30][...]
Es wird geschlossen, wenn die letzte Referenz auf das Filehandle verschwunden ist. Das kann durchaus nach Ende des Scopes passieren.
[...][/quote]
Das kann aber nur nach Ende des Scopes passieren, wenn ich zum Beispiel eine Referenz auf die Variable irgendwohin übergeben habe, oder?[/quote]
Genau. Wenn du keine weiteren Referenzen erzeugt hast, dann wird sofort geschlossen (oder ein sonstiger Destruktor aufgerufen), wenn der Referenzzähler auf Null gefallen ist.
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2005-12-21 09:45.