PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Welche Scriptsprache für Webeinsatz? Empfehlungen?


Mond
2010-06-03, 10:58:40
Hallo alle zusammen,

ich habe eine Frage und suche nach Ideen von Euch bezüglich einer möglichen Umsetzung. Und zwar geht es darum, dass ich einen Webserver habe, auf denen User Dateien hochladen können. Bei den Daten handelt es sich um Text Dateien, die als Longtext in einer Datenbank mit einer JobID hinterlegt werden. Dies alles läuft per HTML, PHP und MySQL. Dies stammt nicht von mir sondern liegt bereits vor.

Diese Text Dateien, die jetzt in der Datenbank gespeichert sind, sollen nun weiterverarbeitet werden. Hier soll eine Scriptsprache helfen, die Dateiformate zu überprüfen (ob diese valide sind und gewisse Spezifikationen einhalten). Nun die Frage an Euch: Welche Scriptsprache würdet Ihr empfehlen und warum (Ruby, Perl, Phyton, oder gar PHP)? Und wie bindet man sowas überhaupt in PHP ein?

Zu mir: Ich kenne mich mit Ruby aus, sonst bin ich allgemein aber kein Programmierkönig.

Vielen Dank für Eure Vorschläge,
Mond

PatkIllA
2010-06-03, 11:26:06
Und das ist ein Rootserver? Sonst hast du ja eh keine Wahl.
Die Beschreibung klingt jetzt auch nicht so als ob man die Überprüfung nicht gleich auf dem Server beim Hochladen machen könnte.

Mond
2010-06-03, 11:42:56
Ja, ist ein Rootserver. Da kann alles installiert werden was gebraucht wird.

Die Überprüfung könnte auch vor dem Einfügen in die Datenbank passieren, das ist richtig. Ich habe halt keine genaue Vorstellung wo man am besten in den Programmfluß (PHP) eingreift und wie man am besten welche Scriptsprache einbindet.

PatkIllA
2010-06-03, 11:45:15
Wie aufwändig ist denn das Parsen?
vielleicht hast du ja mal ein Beispiel.

Mond
2010-06-03, 12:14:49
Es geht um chemische Moleküldateien wie Mol2 und PDB Dateien. Diese sollen überprüft werden, ob diese valide sind, also reguläre Mol2 oder PDB Dateien und keine Bilder, Word-Dokument oder sonstwas. Dann sollen diese Dateien weiterverarbeitet werden. Es muss überprüft werden, wieviele Moleküle in den Dateien vorhanden sind und ob es mehrere Konformationen gibt. Hier braucht man also eigentlich gute RegExp würd ich sagen.

Yavion
2010-06-03, 13:37:28
Ich denke, dass ich mir dafür zuerst Python anschauen würde.

Mond
2010-06-03, 13:55:42
Ok, wie kann man denn allgemein sinnvoll Scriptsprachen in PHP Prozesse zwischenschalten?

Coda
2010-06-03, 13:59:26
Kein PHP wenn du die Wahl hast ;)

universaL
2010-06-03, 14:25:15
tendenziell wird es egal sein welche skriptsprache du nimmst, da würde ich danach gehen was du kennst und kannst :-)

PatkIllA
2010-06-03, 14:58:58
Warum überhaupt eine Skriptsprache, wenn man auch eine richtige haben kann?

universaL
2010-06-03, 18:02:42
Warum überhaupt eine Skriptsprache, wenn man auch eine richtige haben kann?

sorry for ot:

was ist denn eine richtige sprache?

wenn ich die wahl hätte content/text-überprüfung mit java oder mit ruby machen zu dürfen, würde ich immer ruby wählen, da es dort einfach schöner zu lösen ist ;)

PatkIllA
2010-06-03, 20:08:19
halt so schöne Sprachen mit strikter statisch Typisierung und einem Compiler der mir direkt jede Menge Fehler anzeigt ;)

Was kann Ruby bei text überprüfung so tolles?

Marscel
2010-06-03, 20:45:28
Wenn du einen Rootserver-Zugriff hast, tust du am besten gar nichts am Web-PHP und fügst der entsprechenden Tabelle ein Feld namens 'done' mit oder so hinzu. Im Hintergrund läuft ein Job, der periodisch guckt, was noch nicht done ist, schickt es durch den Validator und setzt es danach auf erledigt.

Für Ruby bietet sich da z.B. resque mit resque-scheduler an.

Mond
2010-06-04, 08:52:31
Kein PHP wenn du die Wahl hast ;)

Du meinst selber als Umsetzung für die Überprüfung oder die ganze PHP Geschichte an sich?


Warum überhaupt eine Skriptsprache, wenn man auch eine richtige haben kann?

Man muss ja nicht mit Kanonen auf Spatzen schießen. Java kann ich nicht mehr wirklich, und mit C da rangehen wäre wirklich Overkill. Ne Scriptsprache ist da schon genau richtig.

Wenn du einen Rootserver-Zugriff hast, tust du am besten gar nichts am Web-PHP und fügst der entsprechenden Tabelle ein Feld namens 'done' mit oder so hinzu. Im Hintergrund läuft ein Job, der periodisch guckt, was noch nicht done ist, schickt es durch den Validator und setzt es danach auf erledigt.

Für Ruby bietet sich da z.B. resque mit resque-scheduler an.

Du meinst also, dass alles was in der Tabelle eingefügt wird ein Done bekommt, wenn es durch das Script gelaufen ist? Und ergo wird alles automatisch überprüft, wenn es noch kein Done hat?

Ansonsten:
Das ganze wird noch ein wenig modifiziert. Und zwar will ich den Textinhalt der Dateien nicht unmittelbar in die DB einfügen, sondern VORHER die Dateien checken, so dass ich wirklich nur Input in die DB haue, der auch brauchbar ist. Aber das ändert ja groß nichts am Ganzen.

Ruft man Scripte aus PHP am besten mit system(), exec(), shell_exec() etc. auf oder geht man da am besten ganz anders ran?

Vielen Dank schonmal für eure Hinweise.
Grüße,
Mond

Gast
2010-06-04, 09:02:31
Man muss ja nicht mit Kanonen auf Spatzen schießen. Java kann ich nicht mehr wirklich, und mit C da rangehen wäre wirklich Overkill. Ne Scriptsprache ist da schon genau richtig.


Das ist aber kein Indiz für Produktivität, sondern eher das Framework und die IDE. Wenn diese und das nötige Wissen vorhanden sind, stellt sich die Frage erst gar nicht.

Tiamat
2010-06-04, 11:42:55
Warum willst du die Überprüfung unbedingt mit ner eigenen Programmiersprache handeln. Wenn die Textdateien über die PHP Seite upgeloaded werden, liegt es doch nahe den Überprüfungsteil auch mit PHP zu erledigen. Damit kannst du das ganze im Speicher halten, und erst in die DB schreiben, wenn die Überprüfung erfolgt ist.

Wenn du jetzt ne andere Sprache nimmst, musst du die Datei erstmal ablegen, dann das neue Programm aufrufen, dass dann wieder die Datei einließt und so weiter. Damit hast du dann 2 mal n Handling auf die Datei, das sicher länger dauert, als hättest du den Part auch noch mit PHP überprüft.

Gruß
Tiamat

Coda
2010-06-04, 16:17:55
Warum überhaupt eine Skriptsprache, wenn man auch eine richtige haben kann?
Weil man mit einer sogenannten "Scriptsprache" für den Webeinsatz ungefähr 10x produktiver sein kann?

PatkIllA
2010-06-04, 16:21:20
Weil man mit einer sogenannten "Scriptsprache" für den Webeinsatz ungefähr 10x produktiver sein kann?
Wo siehst du da den Faktor 10?
Ich sehe da nur Vorteile bei kleinen Dingen, die man alleine mal eben so runterschreiben kann.

Auch wenn ich kein Freund von PHP bin würde ich im vorliegenden Fall den Bruch vermeiden und es direkt an der Stelle in PHP machen.

Marscel
2010-06-04, 20:17:36
Bei uns in der Firma spricht zum Beispiel dagegen, dass im Web-Kontext zu machen, da mit einer Überprüfung zwischen "Datei hochgeladen" und Antwort des Webserver eventuell lange warten muss - allerdings weiß ich nicht, wie groß die Datein sind.

Ich habe gerade sowas ähnliches für CSV Dateien gemacht. Die werden geprüft, ggf repariert, dann geparst und dann entsprechendes in die DB gespeichert, das dauert bei 70kB auch schon mal mehr als drei Sekunden, deswegen:

- asynchroner File-Upload
- nach Upload severseitig einen Job anfordern, der die Dateibearbeitung übernimmt
- clientseitig einen Poller starten, serverseitig werden dann, während der Job parallel läuft, seine Zustände zurückgegeben
- Benutzer informieren, z.B. "Datei hochgeladen und validiert", wenn der Poller ein finished erhält.

Mond
2010-06-10, 12:12:17
Sorry für die späte Rückmeldung, aber ich mache es nun so, dass die hochgeladenen Dateien, die ja als tmp File vorliegen, per externem Ruby Script (durch shell_exec Aufruf) geprüft werden. Je nach Rückgabe aus dem Script behandle ich alles weitere dann in PHP. Und falls alles OK ist gehts in die DB.

Besten Dank nochmal,
Mond