Font
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]830[/thread]

cgi und graphviz



<< |< 1 2 >| >> 13 entries, 2 pages
bo
 2006-10-11 12:12
#8895 #8895
User since
2006-05-09
76 articles
BenutzerIn
[default_avatar]
hi

hat jemand erfahrung mit der verwendung von graphviz mit cgi?
ich habe das problem, dass der bei einer grafikgenerierung gestartete prozess dot.exe nicht beendet wird und scheinbar auch kein ergebnis liefert und deshalb meine seite nicht komplett geladen wird.

es genügt auch schon, lediglich die koordinaten der knoten von graphviz zu erfragen. wenn ich im folgenden code die zeile auskommentiere, in der dot.exe gestartet wird, wir die seite geladen, ansonsten nicht.

dann hilfts nur noch, das laden abzubrechen und den prozess von hand zu killen.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
use strict;
use warnings;
use GraphViz;
use CGI;

my $q = new CGI();
print $q->header(), $q->start_html();

my $g = GraphViz->new(layout => 'dot',
rankdir => 0,
node => { height => '0.05', shape => 'box', URL => '\N' } );

$g->add_edge('A' => 'B');
$g->add_edge('A' => 'C');

# hier startet graphviz dot.exe
print $q->p($_) for (split /\n/, $g->as_ismap);

print $q->end_html;
bo
 2006-10-11 16:29
#8896 #8896
User since
2006-05-09
76 articles
BenutzerIn
[default_avatar]
ich habe noch was bei den perlmonks gefunden, weiss aber nicht, was ich damit anfangen soll.

GraphViz needs a HOME environment variable to work properly.
Do a SetEnv HOME /tmp/ within you CGI environment and it should work fine after that.

was wollen mir diese zeilen sagen? muss ich das ins apache conf eintragen? wenn ja, wie?

aber warum funktioniert es dann, wenn ich dot.exe über einen system call aus meinem script aufrufe?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use strict;
use warnings;
use GraphViz;
use CGI;

my $q = new CGI();
print $q->header(), $q->start_html();

open my $dot, ">", "tree.dot" || die $!;
print $dot qq(digraph g { graph [] A -> B; C -> B; });
close $dot;

my $cmd = "dot -Tgif tree.dot -o tree.gif";
system($cmd);

print $q->end_html;
renee
 2006-10-11 16:40
#8897 #8897
User since
2003-08-04
14371 articles
ModeratorIn
[Homepage] [default_avatar]
Probier mal, ob es reicht, einfach $ENV{HOME} = 'tmp/' am Anfang des Skripts zu schreiben.
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/
bo
 2006-10-11 17:05
#8898 #8898
User since
2006-05-09
76 articles
BenutzerIn
[default_avatar]
@renee
nee, leider nicht... :(

hier noch ein leidensgenosse, leider auch ohne lösung...
http://www.thescripts.com/forum/thread50725.html
nepos
 2006-10-11 18:37
#8899 #8899
User since
2005-08-17
1420 articles
BenutzerIn
[Homepage] [default_avatar]
Naja, wenn GraphViz eine HOME-Variable braucht, dann gib ihm per Apache halt eine. Dieses ominoese SetEnv ist eine Apache-Direktive zum Setzen von Umgebungsvariablen.

Nachzulesen hier: Apache Module mod_env
bo
 2006-10-12 10:58
#8900 #8900
User since
2006-05-09
76 articles
BenutzerIn
[default_avatar]
@nepos
danke für den link, das ändert aber leider auch nix...

graphviz benutzt IPC::Run, um den prozess dot.exe zu starten...
der folgende code erzeugt das gleiche verhalten. der prozess wird gestartet, aber nicht beendet und er produziert keinen output...

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
use strict;
use warnings;
# use GraphViz;
use CGI;
use IPC::Run qw(run binary);

my $q = new CGI();
print $q->header(), $q->start_html();

my $dot = qq(digraph g { graph [] A -> B; C -> B; });
run ['dot', '-Tgif'], \$dot, '>', binary(), 'test_tree.gif';

print $q->end_html;


sind bei IPC::Run irgendwelche bugs bekannt?
ich benutze version 0.79

ohne cgi funktioniert's...

Code: (dl )
1
2
3
4
5
6
use strict;
use warnings;
use IPC::Run qw(run binary);

my $dot = qq(digraph g { graph [] A -> B; C -> B; });
run ['dot', '-Tgif'], \$dot, '>', binary(), 'test_tree.gif';
nepos
 2006-10-12 12:35
#8901 #8901
User since
2005-08-17
1420 articles
BenutzerIn
[Homepage] [default_avatar]
Hm, wie ist denn die genaue Fehlermeldung, wenn du es via IPC::Run machst und CGI nutzt?
renee
 2006-10-12 13:07
#8902 #8902
User since
2003-08-04
14371 articles
ModeratorIn
[Homepage] [default_avatar]
Es gibt wohl keine Fehlermeldung... Es wäre interessant, ob etwas in den Logs steht...
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/
bo
 2006-10-12 13:21
#8903 #8903
User since
2006-05-09
76 articles
BenutzerIn
[default_avatar]
nein, es gibt keine fehlermeldung... und das einzige das im log steht, ist

[Thu Oct 12 11:18:26 2006] [info] [client 127.0.0.1] (OS 10053)Eine bestehende Verbindung wurde softwaregesteuert durch den Hostcomputer abgebrochen. : core_output_filter: writing data to the network

...wenn ich das laden der seite unterbreche
renee
 2006-10-12 13:28
#8904 #8904
User since
2003-08-04
14371 articles
ModeratorIn
[Homepage] [default_avatar]
Welches Betriebssystem und welchen Webserver verwendest Du?

Schonmal probiert, ob andere GraphViz-Programme laufen?

Siehe:
http://www.tei-lin-net.de/tip_graphviz_01.html
http://www.linux-magazin.de/Artikel/ausgabe/2002/09/perl/perl.html

Unter IIS macht es wohl ein paar Probleme:
http://twiki.org/cgi-bin/view/Codev/WhereamiWindows
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/
<< |< 1 2 >| >> 13 entries, 2 pages



View all threads created 2006-10-11 12:12.