1Danke
ERLEDIGT
JA
JA
ANTWORTEN
5
5
ZUGRIFFE
286
286
EMPFEHLEN
-
Ich möchte eine große txt-Datei (2000 kb, 101337 Zeilen!) per PHP-Script nach einem bestimmten String durchsuchen lassen und mir dann einen Teil der Zeile, in der der String steht, ausgeben lassen. Soweit klappt alles ganz gut, bis auf, dass das Script nach ca. 66904 Zeilen aufhört. Es tut so, als ob es komplett durchgelaufen wäre, da die nachkommenden Befehle ohne Probleme ausgeführt werden. Kann das an der Dateigröße liegen, die maximal geladen werden kann?
Das Script läuft wie folgt:
PHP-Code:$datei = fopen("./cog-groups/cogs_all.txt", "r");
$funcgroup = '[M]';
$entf = 'COG';
$einf = '';
$i = 0;
while(!feof($datei)) {
$zeile = fgets($datei,1024);
if(strstr($zeile,$funcgroup)!=NULL){
$zeile_ex = explode(" ", $zeile);
$cog1 = $zeile_ex[1];
echo str_replace($entf,$einf,$cog1);
echo '<br>';
$i++;
}
}
-
05.12.11 14:28 #2
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
Also wenn es nicht am Timeout liegt, dann tippe ich eher darauf das nach ca. 66904 Zeilen ein Zeichen kommst was PHP dazu bringt die Schleife abzubrechen!?
Sicher das es richtig ist auf NULL zu prüfen und nicht FALSEPHP-Code:if(strstr($zeile,$funcgroup)!=NULL)
Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
-
05.12.11 20:08 #3
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Desweiteren ist es anstatt strstr() evtl. sinnvoller strpos() zu verwenden:
Möglicherweise ist die Fehler-Anzeige auch deaktiviert:
Zitat von PHP Manual
Code php:1 2 3
// Schreib mich an den Anfang deines Scripts ini_set('display_errors', 1); error_reporting(E_ALL|E_STRICT);
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
Ich habe nun das Script optimiert. Den Befehl strstr() brauche ich nun nicht mehr, da ich direkt die Datenbank abfrage, deren Tabellenfelder ich direkt überprüfen kann.
Soweit funktioniert alles auch gut. Wenn die Datenflut zu groß wird, kommt aber ein Timeout. Das liegt jedoch wohl an dern Srvereinstellungen vom Anbieter.
-
06.12.11 16:12 #5
schon
versucht?PHP-Code:ini_set('max_execution_time', 6000);
Die Schweine von heute sind unsere Schnitzel von morgen!
-
Das kann auch ein Anzeichen eines schlechten Queries sein. Jage mal dein/e SELECT-Query/Queries durch EXPLAIN. Dieses sagt dir, ob er die gesamte Tabelle durchsuchen muss oder auf Indexe zugreifen kann. Indexe sind weitaus schneller, da MySQL sie im Arbeitsspeicher hält, wenn die nicht zu groß werden.
Dokumentation zum EXPLAIN StatementCode :1
EXPLAIN SELECT ... FROM ... WHERE ...
Etwas detailreicher ist das Webinar zum Thema MySQL-Performance.
Gruß Kyoya StefanOracle Certified MySQL 5 Professional Developer
Zend Certified PHP 5.3 Engineer
Vorträge, Webinare, etc im Mayflower - Blog
Ähnliche Themen
-
Maximale Dateigröße bei Fileupload
Von Masteric im Forum PHPAntworten: 5Letzter Beitrag: 14.09.08, 13:10 -
phpMyAdmin Maximale Dateigröße vergrößern wie?
Von EddieG im Forum Hosting & WebserverAntworten: 3Letzter Beitrag: 08.11.07, 17:22 -
phpMyAdmin Maximale Dateigröße vergrößern wie?
Von EddieG im Forum Linux & UnixAntworten: 2Letzter Beitrag: 08.11.07, 16:26 -
Maximale Dateigröße
Von Divi im Forum PHPAntworten: 3Letzter Beitrag: 19.11.06, 02:18 -
maximale Dateigröße bei Upload
Von maniteni im Forum PHPAntworten: 2Letzter Beitrag: 15.04.05, 11:12





Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren