PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Smuggels fragt doofe Programmierfragen...


Werbung

Smuggels
05-05-2010, 16:03
... so bevor ich mich in noch mehr Foren anmelde, frage ich doch auch gleich hier mal nach:

Ich habe eine HTML-Seite erstellt, auf der man Daten eingeben kann und mit einem Submit-Button absenden kann an an CGI/Perl-Script. Dieses bearbeitet die Daten und ruft dann mit einem Systemcall ein Programm auf. Die Ausfuehrung des Programms kann allerdings eine Weile dauern. Deshalb haette ich gerne nach dem Absenden eine neue HTML-Seite mit der Nachricht "Ihre Daten werden verarbeitet...." und sobald das Programm fertig ist dann eine HMTL-Seite mit den Ergebnissen von dem Programm (und sonstigen Ausgaben...).

Wie bekomme ich denn diese "Warten"-Seite hin?
Ach ja, ich moechte dabei kein Pop-Up verwenden...

Ueber Tipps nach was ich suchen kann oder welche Befehle sinnvoll sind, waere ich auch sehr dankbar, denn so langsam verzweifele ich schon und hab wirklich keine Lust mehr so unkoordiniert weiterzusuchen...

:wink:

MegaRyan
05-05-2010, 17:51
Öh, Stichwort Ajax?
Klingt jedenfalls irgendwie asynchron, dein Problem... :nixweiss:

Misel
05-05-2010, 20:07
Auf Grund der Art und Weise, wie HTTP funktioniert, ist sowas generell sehr schwierig umzusetzen.

Nachdem ich jetzt ein paar Minuten überlegt habe, denke ich, könnte folgendes funktionieren:

Die Eingabeseite wird vom User abgeschickt.
Das Perlscript startet einen Child-Prozess, der die Daten asynchron verarbeitet. D.h. der eigentliche Prozess für die HTTP-Antwort wartet nicht auf das Resultat, sondern gibt dem Client die "Bitte warten"-Seite zurück.

Auf der "Bitte Warten"-Seite fragt per Regelmäßigem Refresh (entweder Meta-Tag oder AJAX-Call) den Server, ob er fertig ist. Ein separates Perlscript schaut prüft den Status ud gibt ja oder nein zurück.

Wenn nein, lädt wieder die "Bitte Warten"-Seite, wenn ja, das Resultat.

Smuggels
06-05-2010, 09:35
Danke schoen fuer die Tipps :freu:
Ich lese mich dann heute mal in AJAX ein bzw. bin schon dabei :morgen:

Ich haette noch eine generelle Frage:
Ist die Auswertung der Daten mit Perl/CGI ok (das Skript steht naemlich soweit und funktioniert auch - abgesehen von der Warteschleife waehrend der Datenverarbeitung) oder sollte ich doch lieber alles auf PHP umstellen und falls ja, wo waere dann der Vorteil?

Misel
06-05-2010, 12:39
Wenn Du den größten Teil des Codes schon hast und die Infrastruktur steht, solltest Du mit Perl weitermachen. PHP ist Newbie-freundlicher, aber andere Vorteile wirst Du dadurch nicht haben.

Smuggels
06-05-2010, 14:22
Wenn Du den größten Teil des Codes schon hast und die Infrastruktur steht, solltest Du mit Perl weitermachen. PHP ist Newbie-freundlicher, aber andere Vorteile wirst Du dadurch nicht haben.

So, ich steh' jetzt allerdings vor dem Problem, dass es fuer Perl ein Ajax-Package gibt. Allerdings bin ich unfaehig das zu installieren (ich hab wirklich keine Ahnung, warum das nicht klappt) und ausserdem habe ich heute erst erfahren, dass der Server, auf dem das Programm laufen soll, wohl eh PHP zur Verfuegung stellt und es angeblich auch Beispiel-Skripts geben soll :tkbeiss::mauer::tkbeiss: und ich nehme auch mal an, dass sie dort nicht irgendwelche Perl-Zusatzpakete installieren wollen...

Also da ich mit Perl & Ajax nicht so recht weiterkomme, werde ich mir jetzt mal PHP und Ajax anschauen... hoffentlich ist es so Newbie-freundlich wie du sagst ... :trippel:

(So viel Code war es auch nicht?Alle Daten aus dem Formular wurden in einen Hash gelesen, dann kam eine Abfrage nach den Werten hinter den Keys und entsprechend wurden Dateien hochgeladen oder Informationen wurden in eine Datei geschrieben..... sowas muesste ja wohl auch mit PHP machbar sein.... hoffe ich.... zumindest will ich jetzt nicht den halben Nachmittag damit verschwendet haben, das zu installieren (inkl. MySQL, welches natuerlich nicht auf dem Rechner war), um festzustellen, dass es keinen Sinn macht.... naja... ich hol' mir jetzt erstmal einen Kaffee und guck dann mal, ob es irgendwo ein gutes PHP-Tutorial gibt....)

... und falls gerade jemand mitliest: Kann mir jemand eine Internet/Literatur-Empfehlung bezueglich PHP und Auswertung von Daten empfehlen? :helga:

MegaRyan
06-05-2010, 15:36
Wenn du dann alles auf Java EE umstellst, kann ich dir wieder weiterhelfen, so eher nicht. :zahn:

Smuggels
07-05-2010, 11:19
Ich nehme alles zurueck, was ich gestern gesagt habe:
Zum Einen wollen sie auf dem Server doch lieber CGI/Perl verwenden (interne Kommunikation :rolleyes:)
.... und ausserdem funktionierte der Tipp von Misel wunderbar, nachdem ich ein passendes Beispiel dazu gefunden hatte:



Das Perlscript startet einen Child-Prozess, der die Daten asynchron verarbeitet. D.h. der eigentliche Prozess für die HTTP-Antwort wartet nicht auf das Resultat, sondern gibt dem Client die "Bitte warten"-Seite zurück.

Auf der "Bitte Warten"-Seite fragt per Regelmäßigem Refresh (entweder Meta-Tag oder AJAX-Call) den Server, ob er fertig ist.

Daaaanke schoen fuer diese Hilfe :anbet:
Ajax waere vielleicht schoener, aber ich steige nicht so recht durch das entsprechende Perl-Paket durch - die Dokumentation dazu ist wirklich sehr duerftig :crap:


@MegaRyan:
Eigentlich habe ich gar nichts mit dem Erstellen von Webseiten zu tun. Das ist das erste Mal, dass ich das mache, weil wir ein Projekt online stellen wollen und ich derjenige bin, der gerade Zeit hat, um ein wenig rumzubasteln :schäm:

Misel
07-05-2010, 13:11
heh, ich hatte schon fast überlegt, das wegzulassen. Aber freut mich, dass es funktioniert :)

das_urmel
07-05-2010, 21:33
Kennt ihr schon paperC?
www.paperc.de
Dort kann man hunderte Bücher online lesen - kostenlos!

Wenn ihr Interesse habt, PNne ich euch gerne meinen "Spenden-Link". :helga:

Smuggels
10-05-2010, 15:16
So... das naechste Problem:

Mit meinem Perl-Skript lese ich wie folgt die Daten ein:



use CGI;
my $cgi = new CGI;
my %formulardaten = $cgi->Vars();


Alle HTML-Formulardaten werden so in eine Hash eingelesen, wobei der Name der Key ist und die Eingabe der korrespondierende Wert. So weit funktioniert das auch wunderbar, ausser in einem Fall:

Eingabe:
AAAAA BBBBBB
CCCCCC DDDD

Wird im Hash abgespeichert als:
AAAAA BBBBBB CCCCCC DDDD

Die Information ueber den Zeilenumbruch geht also verloren, allerdings benoetige ich diese Information unbedingt :crap:

Hat vielleicht jemand eine Idee, wie ich an die Daten vom HTML-Skript mit Perl kommen kann und die Info ueber den Zeilenumbruch behalte??


@urmel:
Schick mir ruhig mal eine PN :)

RheinFire
10-05-2010, 16:31
PN urmel:freu:
Ich bedanke mich schon mal.

Misel
10-05-2010, 18:02
Smuggels: Ich weiß nicht, wie man das in Perl am besten macht. Aber ich würde das Ding erstmal an einem "\n" in einen Array splitten.

Smuggels
10-05-2010, 18:06
Smuggels: Ich weiß nicht, wie man das in Perl am besten macht. Aber ich würde das Ding erstmal an einem "\n" in einen Array splitten.

Das Problem ist, dass es durch $cgi->Vars() kein "\n" mehr gibt in dem String und aus der Funktion werde ich auch nicht so schlau :crap:

Eine Notlösung wäre das vorab schon mit Javascript irgendwie zu verarbeiten....

Smuggels
11-05-2010, 11:11
Da ich heute morgen leider auch nicht schlauer geworden bin, mache ich jetzt eine Vorverarbeitung mit Javascript, welche die erste Zeile und den Rest voneinander trennt und getrennt ans Skript uebergibt....

.oO( Haett ich doch die gleich mal von PHP ueberzeugen koennen..... )

energy
11-05-2010, 20:25
1. Einlesen der Daten
2. Kodierung des Zeilenumbruchs per regulärem Ausdruck ersetzen oder die Kodierung entsprechend bei der Dateierstellung setzen

Einfach mal ausprobieren.