![]() |
Flamebait: Perl oder PHP ?
Nachdem von mir immer mehr PHP gefordert wird, bin ich heute wieder über was gestolpert, was mich an PHP mehr als zweifeln ließ.
Ein Script, dass die Files eines Verzeichnisses ausliest und ausgibt, schaut in Perl z.B. so aus: Code:
#!/usr/bin/perl Code:
<?php Wo sind die PHP-Gurus? Geht das nicht eleganter? Ich bin von PHP (wieder einmal) schwer enttäuscht. |
Tja es ist natürlich eine Frage der Anforderungen. Ich finde, dass es praktisch unmöglich ist, Perl in eine grafisch aufwendige Site einzubauen, da der gesamte Quelltext vom Script ausgegeben werden muss und dadurch mit keinem WYSIWYG Editor mehr bearbeitet werden kann.
PHP rulez mfg c. |
Perl kann mehr als PHP - allein schon deswegen, weil es vor dem Web entstand. Kommandozeile, GUI (mit TK), Web, einbetten in Applikationen, ........
Wenn schon Vergleiche auf Webebene, dann z.B. Mason vs. PHP. Und dagegen schaut PHP IMNSHO ganz schön alt aus :D |
Zitat:
Ausserdem sind die meisten Perl Scripts wesentlich Ressourcenhungriger (CPU Auslastung von 100% ist bei Hochlast keine Seltenheit) als das PHP Gegenstück. Das liegt aber größtenteils daran das Perl auf den meisten Servern als CGI läuft bzw. auch viele Scripts nicht unter mod_perl funktionsfähig sind. Während Perl mittels mod_perl in die Geschwindichkeitsregion von PHP kommt, kann man PHP mit PHP Accelerator weiter beschleunigen. Bestes Beispiel: http://www.majorgeeks.com/article.php?sid=99 Dieser Mirror von 3D Mark 2001 SE hatte in den ersten beiden Tagen ca. 250000 Downloads, wobei der MajorGeeks Webserver (Cobalt RaQ3 AMD K6/2-300MHz mit 512MB Ram) knapp eine 1 Million Pageviews hatte. Glaubst du das man mittels einer dynamisch generierten Perl Seite wirklich mehr aus dem Webserver hätte herausholen können? Ich glaube es nicht. Ich habe mir dein PHP Script kurz angesehen und da sind mir zwei Sachen sofort aufgefallen: PHP-Code:
if($handle == "") kann auch kürzer geschrieben werden: if (!$handle) bewerkt das gleiche. Am schnellsten ist aber nach wie vor: PHP-Code:
PHP-Code:
|
<?
$directory = "datadir"; $dir = @opendir($directory) or die ("not found"); while ($file = readdir ($dir)) { if (substr ($file, strlen($file)-4, 4) == ".txt") echo $file." \n"; } closedir ($dir); ?> so würd ich das auf die schnelle lösen, wobei ich beim substr vielleicht doch noch mal überlegen würd, was am schnellsten geht, das müsst ich mir noch anschauen. aber prinzipiell ist dass dann auch nicht komplizierter als das perl script gibts eigentlich einen besondern grund, warum du zuerst in ein array schreibst, und dann das array erst ausgibts? wieso nicht gleich ausgeben? wennst wirklich alle files (nicht nur alle textfiles) auslesen willst, schreibst einfach statt dem substr-topfen if (is_file($file)) hin zu der frage was besser ist ich kann von mir sagen, dass ich php code weitaus einfacher lesen kann als perl-code grund dafür ist, dass php weitaus mehr ähnlichkeit zu c und java hat, in denen ich schon vorher programmiert hab, als perl sprich ein c-programmierer wird sich glaub ich mit php weitaus einfacher tun als mit perl. |
Zitat:
Zitat:
Zitat:
Ach ja - danke für's ansehen. Zitat:
Danke für's Feedback, wieder was gelernt :) |
Zitat:
Zitat:
Zitat:
Z.B.: Es gibt in PHP eine Funktion, um ein File in ein Array zu lesen - Fein. Es gibt auch einen Funktion, um eine Zeile in einen String zu lesen. Da muss ich aber wissen, wie lang der String wird - des is doch a Schass, oder? |
stimmt
bei . und .. gibts probleme, auf die hab ich vergessen die behandelt ich normal mit if ($file == "." || $file ="..") weil die meistens andere funktionen bekommen und daher gesonderte ausgabe benötigen. das mit dem lesen ist gewohnheitssache, nur trau ich mir zu sagen, dass wenn ich von c komm, auf anhieb ein php-script eher versteh als ein perl-script zumindest wars bei mir so. was heißt eigentlich das "my" in perl? falls du mit der zeile einlesen "fgets" meinst, stimmt das nur zum teil denn ich kann bei fgets ($filehandler, 100000); mitgeben und das liest mir dann die ersten 100 kB aus (ja, ich weiß, sind nicht genau 100kB); wenn vorher ein linebreak oder eof kommt, passts auch, weil dann wird nur bis zum ende der zeile/des files gelesen. das problem war in meinen scripts bis jetzt immmer nur sehr bedingt vorhanden, weil ich selten über diese längen hinausgekommen bin. aber ich weiß was du meinst, das problem selbst ist da, wie oft es relevant wird, hängt halt wieder von der art des scripts ab. |
Wie gesagt, dass mit dem Lesen ist IMHO Ansichtssache;)
Das mit dem eine Zeile einlesen kommt bei mir öfter - und ich hatte schon LANGE Zeilen :D Mit "My " deklariest Du eine Variable. Wenn Du "use strict" am Anfang eines Scripts angibst, musst Du eine Variable deklarieren, bevor Du sie verwendest. Sehr praktisch, da dadurch bereits zur Kompilierzeit viele Fehler gefunden werden. Weiters beschrängt ein my die Gültigkeit der Variablen auf den aktuellen Block (File bzw. {}). |
Zitat:
Zitat:
http://forums.ikonboard.com (mod_perl) http://www.invisionboard.com/forums/ (PHP ohne PHP Accelerator) Was ist schneller? |
Alle Zeitangaben in WEZ +2. Es ist jetzt 07:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag