Moin,
ich bin gerade dabei mich mit Handlern unter mod_perl zu befassen. Jetzt würde ich gerne vor dem Download einer Datei (in diesem Fall mp3, gilt aber grundsätzlich für jeden anderen Download auch) den Handler arbeiten lassen und wenn er fertig ist soll der Request ganz normal weiterlaufen.
Nun habe ich also folgendes ausprobiert:
Handler:
package Apache::Schnickschnack;
use strict;
use warnings;
use Apache::Const qw(:common);
sub handler {
# mache hier was zu machen ist
return OK;
}
1;
Directive in der httpd.conf:
PerlModule Apache::Schnickschnack
<Files ~ (\.mp3$)>
SetHandler perl-script
PerlResponseHandler Apache::Schnickschnack
</Files>
Das funktioniert leider nicht richtig.
# mache hier was zu machen ist
wird zwar korrekt ausgeführt, also beim Anfordern von mp3-Dateien wird der Handler aufgerufen und erledigt auch das was er soll, aber danach wird die Datei nicht ausgegeben. Der Antwort-Header sieht dann so aus:
Date: Wed, 12 Apr 2006 14:29:43 GMT
Server: Apache/2.0.49 (Linux/SuSE)
Content-Length: 0
Keep-Alive: timeout=15, max=99
Connection: Keep-Alive
Content-Type: audio/mpeg
200 OK
Was mache ich da falsch?\n\n
<!--EDIT|bsnoop|1144856464-->