php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #16 (permalink)  
Alt 03-07-2009, 20:16
piratos
 Guest
piratos
Beiträge: n/a
Standard

Ich sage es mal kurz und deutlich, in der Zeit wo du hier Fragen stellst wie

Zitat:
kann ich das problemlos mit dieser zeile ersetzen?
PHP-Code:
$arr=explode("\n",file_get_contents($_SERVER['DOCUMENT_ROOT']."/datei.log"));
hättest du das schon zig mal probieren und somit dir selbst die Antwort liefern können - warum also eine solche Teilfrage ?

Bei einem Singledurchlauf wegen der 5..6..7 ten Kommastelle solch ein Aufwand selbst und von den Beteiligten zu verlangen das ist total daneben.

Man kann natürlich nicht alles wissen, aber man darf erwarten das man sich zumindest das Manual durchliest und die Kommentare dazu.

Also ich meine statt mit solchen Dingen zu kommen wäre doch wohl erheblich mehr Eigeninitative angesagt.

Erkennt man das hilft man gerne, erkennt man es nicht denkt man sich sein Teil.

In dem Sinne noch weiter Spass beim erforschen von PHP.

Zitat:
Ja, ich mag sehr kurzen code/zeilen lieber, ich denk da auch an Morgen, falls ich da wieder ran muß und dann sollte ich noch verstehen was das script detailliert so tut.
Das ist 100% verkehrt - kryptischer Code der zudem in ie Gefahr läuft nicht optimal zu sein ist erheblich schwieriger zu lesen als normal aufgestellter.

Geändert von piratos (03-07-2009 um 20:20 Uhr) Grund: Ergänzung
Mit Zitat antworten
  #17 (permalink)  
Alt 03-07-2009, 20:52
RamonaS
 Registrierter Benutzer
Links : Onlinestatus : RamonaS ist offline
Registriert seit: Mar 2009
Beiträge: 177
RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Nein ich bin heute nicht pampig! :-)

Ich frag mich auch warum es - um eine datei in ein array zu schaufeln in php - soviele möglichkeiten gibt. In php ist mehrere doppelt und 3fach.
Gäbe es nur eine Möglichkeit, dann hätte ich auch nicht fragen brauchen.

Grad beim datei lesen und schreiben, gibts ne menge möglichkeiten das zu tun, aber bis auf paar ms geschwindigkeitsunterschied tun die alle das gleiche.
Mit Zitat antworten
  #18 (permalink)  
Alt 03-07-2009, 20:59
piratos
 Guest
piratos
Beiträge: n/a
Standard

Nun gut es führen viele Wege nach Rom und bei manchen Funktionen gibt es erhebliche Unterschiede in den Möglichkeiten und dem Einsatz - gleich sind sie nicht unbedingt.

Zudem sind so manche Dinge im Verlaufe der Entwicklungsgeschichte von PHP entstanden.

Da unterschiedet sich PHP keineswegs von anderen Programmiersprachen.

Aufgabe klar und komplett formulieren und nie mit Auszügen posten aus dem die Gesamtaufgabe nicht hervorgeht.

Das hilft dir und anderen die helfen könnten.
Mit Zitat antworten
  #19 (permalink)  
Alt 04-07-2009, 15:35
RamonaS
 Registrierter Benutzer
Links : Onlinestatus : RamonaS ist offline
Registriert seit: Mar 2009
Beiträge: 177
RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat:
Zitat von piratos Beitrag anzeigen
Um mal zu zeigen von was man redet hier mal ein

Es kommt da eigentlich nur fopen mit fread oder file_get_contents in Frage.
Der Code file_get_contents ist kürzer, aber tatsächlich langsamer.

Wenn ich das nun auf die gepostete Eingangsfrage beziehe ist das eine reine Beschäftigungstherapie.
Ich möchte nochmal hier mitdiskutieren.
Ich habe hier local das mal mit einer 61kb textdatei probiert mit
$max=500; # Anzahl der Dateidurchläufe
Nur 500 weil mein php-timeout bei 30 sec einsetzt

...und hier ist file_get_contents der gewinner!
Start fopen fread ist schon nach dran aber das ergebnis ist eindeutig.

PHP-Code:
Start file_get_contents
0.502177000046
0.503149986267
0.50080704689
0.500221014023
0.50035905838
0.503863096237
0.500072002411
0.498913049698
0.50068116188
0.50141119957

Start fopen fgets
1.10370492935
1.12760019302
1.11060190201
1.11777806282
1.12520098686
1.14152407646
1.13601994514
1.15308403969
1.13815402985
1.14328503609

Start fopen fread
0.554963111877
0.554191112518
0.552239179611
0.555691957474
0.555094003677
0.555710077286
0.553253889084
0.556843996048
0.555000066757
0.552794933319 
Nein ich will dich/euch/uns nicht jetzt nerven, aber trotzdem wissen, warum dein ergebnis nicht auch so ausfällt.

WAMP with PHP v5.2.3 and MySQL v5.0.45
Rechner, 1,8 GHz CPU 256 RAM
Mit Zitat antworten
  #20 (permalink)  
Alt 04-07-2009, 15:55
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Das kann an allem Möglichen liegen...
Virenscanner
Dateisystem
Betriebssystem
usw.

Vergleichbar: glob()
Glob ist unter Linux meist erheblich fixer als opendir(). Und unter win siehts genau andersrum aus.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #21 (permalink)  
Alt 04-07-2009, 17:12
Benutzerbild von mermshaus mermshaus
 Registrierter Benutzer
Links : Onlinestatus : mermshaus ist offline
Registriert seit: Jun 2009
Beiträge: 451
mermshaus wird schon bald berühmt werden
Standard

Hier wurde es bereits von wahsaga angesprochen, aber ich wiederhole es mal etwas ausführlicher:

Sobald die Datei, die du einliest, eine gewisse Größe erreicht und es keinen Grund gibt, ihren gesamten Inhalt im Speicher zu halten (zum Beispiel, weil du nicht alle Werte ausgeben, sondern nur eine Statistik daraus erstellen willst -- keine Ahnung, kommt auf die Anwendung an), fallen file() und file_get_contents() sowieso raus, weil sie alles gleichzeitig in den Speicher schaufeln, was einfach nur entsetzlich ineffizient ist. Die Frage nach der Geschwindigkeit ist vielleicht einfach nicht die richtige.

Wenn die Einträge der Datei in etwa gleich lang sind und du bestimmte Zeilen/"Datensätze" aus einer Datei auslesen möchtest, könnte es sich lohnen, darüber nachzudenken, den Inhalt der Datei in Blocks identischer Länge zu organisieren. Du verlängerst jeden Eintrag durch Anhängen von Leerzeichen künstlich auf eine Länge von DATENSATZLÄNGE Zeichen/Bytes, bevor du ihn in die Datei schreibst.

Selbst wenn dabei Speicherplatz ungenutzt bleibt, weil nicht jeder Datensatz zwangsläufig die zugedachte Maximallänge ausfüllt, kann man so per fseek() mit DATENSATZLÄNGE * DATENSATZNR ruckzuck an die Stelle des n-ten Eintrags springen (das ist grob gesagt das, was Datenbanken machen). Zudem liefert dir dann filesize() / DATENSATZLÄNGE die Anzahl der Einträge in der Datei, sodass du auch einfach an die letzten drei rankommen würdest.

Allein die Geschwindigkeit von file(), file_get_contents() und fopen() zu vergleichen, ist wenig aussagekräftig, da die Funktionen unterschiedliche Aufgaben erfüllen.

Noch ein hübsches Zitat zum Thema "kurzer Code" von Aaron Seigo (einem der maßgeblichen Entwickler von KDE). Es passt hier nicht hundertprozentig, aber ich mag den "Don't get clever"-Teil.

Zitat:
Zitat von Aaron Seigo
  • Don't get clever: You may [have] some super duper clever way of doing something, but if it comes at the cost of code readability think twice. If it doesn't really gain you all that much pass on the opportunity to be clever. Keep it simple and the people who come after you will love you for it.
  • Document your cleverness: There are times you have no choice but to be clever. Some problems are just not easy to solve and to be solved well they require non-trivial code. When that happens, be sure to leave meaningful comments in the code so people can understand your cleverness.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Code optimieren RealFairPlayer PHP Developer Forum 4 25-10-2006 13:07
Blätterfunktion für DIESEN GB-Code!!! hellspike1 PHP Developer Forum 8 02-09-2005 23:50
Code optimieren Scott BRAINSTORMING PHP/SQL/HTML/JS/CSS 7 17-12-2004 10:32
Wer kann mir diesen Code von html mit Java in php wandeln? Kiruma PHP Developer Forum 9 10-12-2003 13:51
Code für NS optimieren Kerosin HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 7 12-03-2003 09:10

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:20 Uhr.