PHP versus C++ versus Shell/Bash

dotdoms

New Member
Hallo,

ich habe vor ein Script zu entwerfen, welches über zig Instanzen die allesamt parallel laufen Daten aus dem Internet einscannt und diese in eine Datenbank einschreibt, um mein derzeitiges zu ersetzen.

Bis dato arbeite ich seit nunmehr schätzungsweise 8 Jahren ausschließlich mit PHP, da ich eigentlich bisher nichts anderes gebraucht habe. Da dieses jedoch ja erst am Server interpretiert werden muß, dachte ich mir, daß für eine derartige Anwendung evtl. andere Sprachen interessanter sind.

Insofern hätte ich gern eure Meinung, ob sich z.b. durch den Einsatz von c++ nennenswerte Vorteile spezifisch der Geschwindigkeit als auch der produzierten Serverlast ergeben könnten, und falls ja in welcher Relation zu PHP ihr die seht?

Außerdem würde ich mich interessieren, ob ihr solche Vorteile auch bei bash/shell sehen würdet? Scheint ja auch ein scriptsprache zu sein, die erst am server kompiliert wird, aber halt relativ reduziert auf die wichtigsten Funktionen. Insofern eher C oder eher bash?

Zu guter letzt, gibt es andere Programmiersprachen, die sich anbieten würden, z.B. Java? Oder auch "kleinere" a la Ruby on Rails, Python, etc.?

Achja, um das vorweg zu nehmen, ich werde natürlich ein derartiges Script nicht selbst umzusetzen versuchen, da mir schon klar ist, daß ein gut programmiertes Script in PHP sicher besser ist als ein schlecht programmiertes in C++, aber ich würde mich halt generell dafür interessieren, welche Sprachen - wenn in Auftrag gegeben - Sinn machen?

Danke :)

mfg dd :)
 
Ich gehe mal nur auf die Aufgabenstellung des Scriptes ein, denn die Aufgabenstellung ist noch nicht ganz klar.
zig Instanzen die allesamt parallel laufen Daten aus dem Internet einscannt
Hier sind in erster Linie das Internet/Netzwerk/externe Server die Flaschenhälse.
Aber was meinst Du mit "einscannt"?
Falls hier irgendeine Weiterverarbeitung, Scanner/Parser, etc. gemeint ist, so müßten wir schon genauer wissen, was damit gemacht wird, um Dir Entscheidungshilfen an die Hand zu geben.

diese in eine Datenbank einschreibt
Hier könnte ebenfalls noch ein Flaschenhals stecken.

Wie Du siehst ist die größte Frage vor allem, was Du aus den Daten machen willst.

huschi.
 
Nun ich mache mit den Daten eigentlich vorerst relativ wenig. Ich speichere sie primär nur mal, evtl. 1-2 regex, aber wahrscheinlich nicht mal das. Das folgt erst später in der (langsameren) detailverarbeitung. Somit also nur lesen und sichern der Daten mit ein paar Datenbankrückfragen ob schon vorhanden, etc.
 
In dem Fall ist es also keine Frage der Performance.
Ergo gehen wir der Frage nach, was der Speicher so macht:
Da Du bisher wohl mit reinen PHP-Scripten arbeitest drüftest Du hier wohl am schlechtesten abschneiden.
PHP ist nicht (zumindest kaum) Multithreading-fähig. Du startest also mehrere Instanzen des PHP-Interpreters mit dem Script, welche alle ihren vollen Speicher für sich behalten.

Wenn um Speicherersparnis gehen soll, wäre es geschickter ein richtiges Multithreading-Programm zu schreiben. Muß aber auch unbedingt sein.

Für das Scannen/Parsen im späteren Verlauf würde ich auf jedenfall von PHP abraten. PHP ist recht langsam bzgl. seiner RegEx. Hier ist Python oder Perl als Script-Sprache sinnvoller.
Als Hochsprachen kommen natürlich hier auch C oder Java in Frage. Java frisst zum Start aber erstmal einiges an Speicher und hat eine recht eigenartige RegEx-Lib.

huschi.
 
Ich würde zuerst eine ganz andere Frage stellen:

Wer soll es hinterher warten oder erweitern?
Du? Wenn ja, nimm eine Sprache die Du beherrscht.
Wenn es keine Echtzeitanwendung im Bereich der Massendatenverarbeitung (Also Gigabyte / Stunde und mehr) dann ist es völlig irrelevant welche Sprache Du verwendest.

Ich würde Perl wegen der Parser Module bevorzugen.
Letzendlich kenne ich diese am besten. Aber ich würds ja auch selber schreiben.
 
Meine Empfehlung: 1. Python und dann als Alternative Perl... PHP ist hier eher weniger geeignet. Und bei Python gibt es besonders im Bereich Regexp, XML-Parsing viele gute Module. Außerdem Multithreading-fähig.
 
Back
Top