Schrift
[thread]341[/thread]

Script hängt sich auf: weis nciht wo...

Leser: 1


<< >> 7 Einträge, 1 Seite
pktm
 2004-08-01 20:53
#3281 #3281
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

habe mir ein Script geschrieben, welches mir ein Reservierungsformular checken soll.
Das sieht so aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
sub validateQuery {
my $self = shift;
my $redir = shift || 1;
my $q = $self->query();
foreach( @{$self->param('Felder')} ){
#print STDERR Data::Dumper::Dumper($_);
unless( defined($q->param("RES_".$_)), $q->param("RES_".$_) ne "" ){
#print STDERR Data::Dumper::Dumper("RES_".$_);
if( $redir ){
# redirect to Form with ErrorMsg
my $new_url = $q->url(-relative=>1,) . '?rm=showForm;error=1';
# alle FormularFelder zusammenfügen, zwecks übergabe an Script
my @daten = @{$self->param('SystemFormFields')};
push @daten, @{$self->param('Felder')};
push @daten, @{$self->param('weitereFelder')};
foreach my $feld ( @daten ){
#print STDERR Data::Dumper::Dumper($feld);
$new_url .= ";".$feld."=".$q->param("RES_".$feld);
}
#print STDERR "bin da\n";
$self->redir($new_url);
#print STDERR "bin vorbei\n";
last;
exit(0);
}else{
# return fehlerhaftes Feld
return $q->param("Bitte überprüfen Sie Ihre Eingabe im Feld: $_");
last;
}
}
}
return 'validateQuery';
} # /validateQuery


Irgendwo darin muss ich was gebaut haben, woran sich perl aufhängt.
Wenn ich die Sub aufrufe ($self->validateQuery(1)) erzeuge ich nacheinander immer wieder mal einen Perl-Prozess der den Rechner gut ins Schwitzen bringt und den Apache-Webserver zwische 5 und 35% auslastet.
Sieht wer den Fehler?
mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
esskar
 2004-08-01 21:06
#3282 #3282
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
genau seh ich es jetzt nicht, aber ein paar hinweise vielleicht:
wegen
Code: (dl )
my $redir = shift || 1;
ist $redir immer wahr.
Code: (dl )
last; exit(0);
exit wird nie ausgeführt
format_c
 2004-08-01 21:18
#3283 #3283
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
[quote=esskar,01.08.2004, 19:06]...
Code: (dl )
my $redir = shift || 1;
ist $redir immer wahr. ...[/quote]
Darum gehts doch glaub ich weniger. Es geht doch glaub ehere darum ob shift wahr oder falsch zurückliefert und damit elegant ein Defaultwert zugewiesen werden kann:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
format_c@server:~> perl
sub test {
my $wert = shift || 'default';
print $wert,"\n";
}
print "Versuch1 mit Parametern:\n";
test('meinwert');
print "Versuch2 ohne Parameter:\n";
test();
Versuch1 mit Parametern:
meinwert
Versuch2 ohne Parameter:
default
format_c@server:~>


Edit:@pktm: Hast du auch mal rain pragmatisch folgende Sachen ausprobiert:
- use strict;
- use warnings;
- use CGI::Carp qw/fatalsToBrowser warningsToBrowser/;
- Nach Ausgabe des HTTP-Header warningsToBrowser(1);
- UNd den HTML-Code nach warnings kontolliert

Ich sags nur, weil ich dadurch schon mal tage lang nach einem Fehler gesucht hatte der durch eine warnung verursacht wurde.

Was macht $self->redir() ??
Gruß Alex\n\n

<!--EDIT|format_c|1091381074-->
esskar
 2004-08-01 21:27
#3284 #3284
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=format_c,01.08.2004, 19:18]Darum gehts doch glaub ich weniger. Es geht doch glaub ehere darum ob shift wahr oder falsch zurückliefert und damit elegant ein Defaultwert zugewiesen werden kann:[/quote]
ja... aber da $redir nur in der if anweisung abgefragt/benutzt wird, könnte er an der stelle auch if(1) schreiben :)
format_c
 2004-08-01 22:06
#3285 #3285
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Oh achso. Hatte ich garnicht beachtet.

Gruß Alex
pktm
 2004-08-01 22:17
#3286 #3286
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Was die default-Zuweisung betrifft stimme ichzu, da muss cih den umgekehrten Fall annehmen, also =shift || 0; - immerhin wäre der jetzige alternativwert ja 0....
Und im Else-Teiol ist noch ein Fehler, da ist $q->param(... falsch gesetzt.
Hier die Sub redir:
Code: (dl )
1
2
3
4
5
6
7
8
9
sub redir {
my $self = shift;
my $q = $self->query();
my $new_url = shift || $q->url(-relative=>1);
$self->header_type('redirect');
$self->header_props(-url=>$new_url);
#print STDERR Data::Dumper::Dumper($new_url);
return "Redirecting to $new_url";
} # redir


Das mit Use strict; etc. ist bei mir immer an (sollte icheventuell in die SIg schrieben :) ).
FatalsToBrowser kann ich da schon weniger benutzen, da ich mit CGI::Application arbeite.
Aber da könnte ich mal den Debug-Modus anschmeissen...
mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
pktm
 2004-08-01 22:20
#3287 #3287
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
+++News: durch die negativ-Annahme bekomm eich jetzt schonmal keine Endlosschleife mehr, jetzt fehlt mir nurnoch die Ausgabe, die ich haben will, das müsste aber wo anders liegen+++
http://www.intergastro-service.de (mein erstes CMS :) )
<< >> 7 Einträge, 1 Seite



View all threads created 2004-08-01 20:53.