Bevor ich jetzt die Fragen beantworte, vielleicht nochmal ein Erklärungsversuch mit Beispiel:
Aha, danke. Vorab noch zwei Fragen: Wenn du das Perl-Script direkt aufrufst (mit Parametern natürlich), dann ist alles i.O.? Hast du es schon mal mit einem anderen Grafikformat versucht?
im CGI:
(...)
my $startVar = param('start');
my $endVar = param('end');if (!defined $startVar || !defined $endVar)
{
warn "Zefix, keine Params!";
my $myCGI=new CGI;
print $myCGI->header(-status=>'204 No response');
exit(0);
}
my $pngContent =/usr/local/bin/genStat -start=$startVar -end=$endVar
;
Schreibe doch nur interessehalber den Inhalt von $pngContent in eine Datei und speichere diese ab. Wird diese dann als PNG erkannt?
Das PNG wird nun in einen IFRAME zurückgeschrieben (ist sichtbar)
Wie das? Perl kennt kein IFRAME, nur einen anfragenden Client.
Ja, hatte ich halt schonmal beschrieben & dachte ich könnte es wegen vereinfachung weglassen, jetzt: siehe Beispiel (target="igmFrame").
Wenn du die IFRAME-Spielereien mal weglässt oder als Target ein FRAME nimmst, besteht dann immer noch ein Problem?
Hast du schon mal versucht, dieses Backticks-Gedöns wegzulassen, und das Ganze so zu regulieren:
my $command = "/usr/local/bin/genStat -start=$startVar -end=$endVar 1>$id.png";
[link:http://perldoc.perl.org/functions/system.html@title=system]( $command ) == 0 or die 'Failed';
my $buf;
print "Content-type: image/png\n\n";
open(IMG, "<$id.png") or die $!;
binmode(IMG);
while(read IMG,$buf,8192) {
print $buf;
}
close IMG;
Also das Ergebnis der Operation serverseitig zwischenspeichern, $id wäre dann irgendeine temporäre Geschichte, hier könnte File::Temp helfen.
Viel mehr fällt mir dann leider auch nicht an möglichen Lösungsansätzen ein.
Siechfred
Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.