2010-11-25 10 views
3

Einige der Funktionen, die ich für eine neue Seite von mir plane, sind bereits als freie Perl-Module verfügbar. Daher schaue ich auf die Möglichkeit, sie zu verwenden, anstatt sie in PHP neu zu programmieren. Ich plante, exec oder system Funktion zu verwenden, um das Perl-Skript aufzurufen, das langsam sein wird. Aber ich stieß auf eine pecl extension, die PHP to interpret perl code ermöglicht.Perl-Interpreter für PHP

Beeinflusst dies die Leistung meiner anderen PHP-Seiten, die das Perl-Skript nicht verwenden? Ich verstehe, dass das zusätzliche Modul meine Speicherauslastung erhöhen wird, aber abgesehen davon, wird es irgendwelche Probleme geben?

+0

Ich bin mir ziemlich sicher, dass der Aufruf von Perl über exec/system viel schneller ist als das Ausführen in PHP ... Warum sollte das langsam sein? Woher hast du das? –

+0

Gibt es etwas, das PHP für die Perl-Ausgabe benötigt, die PHP benötigt, um es aufzurufen? Kann das Perl-Skript alles unabhängig von PHP verarbeiten? – stillstanding

+0

* (verwandt) * [Wie kann ich eine URL oder Variable von Perl an PHP übergeben?] (Http://stackoverflow.com/questions/4045891/how-can-i-pass-a-url-or-variable- from-perl-to-php/4046132 # 4046132) und [Aufruf des Perl-Skripts von PHP und Übergabe von Variablen unter Verwendung eines variablen Perl-Skript-Namens] (http://stackoverflow.com/questions/3438626/calling-perl-script -from-php-and-passing-in-Variablen-while-auch-using-variabliz/3438694 # 3438694) – Gordon

Antwort

3

Es sieht so aus, als ob alles darin besteht, perl in den PHP-Prozess einzubetten. Sie sollten eine Speichererweiterung von einigen Megabyte plus alle Daten sehen, die Sie in Perl erstellen. Es sollte keinen Code verlangsamen. Es ist nur eine andere Bibliothek, die im Speicher sitzt und darauf wartet, dass Sie sie anrufen. Diese Lösung bietet zwei Vorteile: Sie müssen keine Zeit verschwenden, um einen anderen Prozess zu erstellen, und Sie müssen die Rückgabewerte des zu druckenden Texts nicht analysieren.

Eine andere Lösung besteht darin, einen Perl-Daemon zu schreiben und mit ihm über einen Domain-Socket, eine Pipe oder eine andere IPC-Methode zu sprechen.

Sie könnten auch an der Perl Dokumentation für embedding perl interessiert sein.

+0

Können Sie mich bitte auf eine Dokumentation oder ein Tutorial verweisen, wie man es mit Daemon macht? Was wird schneller, Interpreter oder Daemon? –

+0

Eingebauter Interpreter wird schneller sein. Der IPC wird einen Overhead hinzufügen, egal was passiert. Je nachdem, auf welche Perl-Module Sie zugreifen möchten, kann es jedoch sinnvoll sein, sie in einen Anwendungsdämon zu legen. POE :: Component :: IKC wurde speziell für diese Art von Daemon geschrieben.Es gibt auch einige Module, die XMLRPC verwenden. – Leolo

1

Sind diese Perl-Module etwas, das in nativem PHP einfach nicht verfügbar ist? Oder sind sie einfach genug, um sie in PHP zu konvertieren?

Mit anderen Worten, müssen Sie wirklich Perl-Code hier ausführen?

Auch wenn Sie die Leistung nicht beeinträchtigen, beeinträchtigen Sie die Wartbarkeit Ihres Systems durch Hinzufügen von Sprachen.

Es gibt Zeiten, in denen Sie zwischen Sprachen kommunizieren müssen, aber für mich klingt das nicht wie einer von ihnen. Es klingt für mich, als ob Sie viel besser gedient wären, ein entsprechendes Stück Code in PHP zu finden oder zu schreiben.

Sie sagen in einem Kommentar an anderer Stelle, dass der Perl-Code "nur einige praktische Funktionen wie Whois Lookup" bietet, also habe ich eine schnelle Google und fand diese: http://www.phpwhois.org/. Es gab viele andere relevant aussehende Ergebnisse.