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
  #1 (permalink)  
Alt 24-02-2004, 01:21
Alexis_
 Newbie
Links : Onlinestatus : Alexis_ ist offline
Registriert seit: Feb 2004
Beiträge: 4
Alexis_ ist zur Zeit noch ein unbeschriebenes Blatt
Question Effiziente Suche nach gleichen Zeichenketten in Arrays

Hi @ll,

ich habe ein Problem:

wie kann ich ein Array1 nach Werten (kleine Strings) durchsuchen die in Array2 vorkommen, so, das die Werte in Array3 zuruckgeschrieben werden können (oder gleich .txt), jeder Wert nur ein mal? Der Hacken ist, das die Arrays riesige Datenmengen enthalten (ca. 30 MB), und "normaler" Vergleich liegt dem Server schon fast lahm! Die Funktion array_diff bringt es auch nicht!

Bin seeeehr dankbar für Hilfe!

Geändert von Alexis_ (24-02-2004 um 01:26 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 24-02-2004, 07:22
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

brauchst du nur array3 oder auch array1 und array2?

wenn du die daten aus ner datenbank bekommst, kann man eventuell da schon ansetzen (SELECT posten)
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #3 (permalink)  
Alt 24-02-2004, 08:04
Alexis_
 Newbie
Links : Onlinestatus : Alexis_ ist offline
Registriert seit: Feb 2004
Beiträge: 4
Alexis_ ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi mrhappiness ,

Zitat:
brauchst du nur array3 oder auch array1 und array2?
wenn du die daten aus ner datenbank bekommst, kann man eventuell da schon ansetzen (SELECT posten)
Ich glaube doch rolleyes:
Daten kommen aus ASCI-Dateien.

Array1 ist das Ergebnis von Suche mit Regulären Ausdrucken.
Array2 ist enthält Werte (gleiche wie Array1) aus anderen .txt-Datei.
Array3 soll das Ergebnis von einem Vergleich (Kombination) von Array1 und Array2 werden und Werte von beiden enthalten, vorbei kein Wert (String) darf 2 mal (oder öfter) vorkommen. Das Ziel ist Erstellung von eine Liste in .txt mit gefilterten Werten - Email-Adressen, Namen etc.
Mit Zitat antworten
  #4 (permalink)  
Alt 24-02-2004, 08:50
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

mach das mit ner datnbank *g*

wenn nicht, könntest du um einen timeout zu vermeiden, immer nur 1000 einträge (beispielwert) bearbeiten, aus demarray löschenund das neue array in einer datei speichern

dann rufst du mit header() die seite erneut auf und machst die nächsten 1000
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #5 (permalink)  
Alt 24-02-2004, 12:14
Alexis_
 Newbie
Links : Onlinestatus : Alexis_ ist offline
Registriert seit: Feb 2004
Beiträge: 4
Alexis_ ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
mach das mit ner datnbank *g*
Gehet nicht, ich kriege dem Müll auf dem Tisch und muss mit leben
An so etwas hebe ich nicht gedacht, ich habe ganze Zeit mich mit dem sortieren beschäftigt Aber so gehet es sicher auch

Deine Idee ist prima! Wird mir sicher weiter helfen
Mit Zitat antworten
  #6 (permalink)  
Alt 25-02-2004, 01:19
quinn
 Newbie
Links : Onlinestatus : quinn ist offline
Registriert seit: Jan 2004
Beiträge: 22
quinn ist zur Zeit noch ein unbeschriebenes Blatt
Standard

<blöd daher red>
nix mit header neu aufrufen! das macht man schön brav mit einer for schleife, die eine funktion aufruft und das neue ergebnis an das alte mit dran hängt. am ende wäre es vielleicht noch clever array3 nochmal zu durchforsten, ob da doppelte einträge sind, denn lass eintrag 352 und 1355 identisch sein...
</blöd daher red>

aber ich versteh noch nicht so ganz, warum du so riesen datenmengen hast! die einzelnen einträge in der db müssen sich doch in irgendeinem punkt eindeutig voneinander unterscheiden und nach dem feld suchst du. du kannst dir ja die infos häppchenweise aus der db holen, immer unter berücksichtigung des bisher erarbeiteten. oder hab ich da irgendwas nicht verstanden...
Mit Zitat antworten
  #7 (permalink)  
Alt 25-02-2004, 06:38
derHund
 PHP Master
Links : Onlinestatus : derHund ist offline
Registriert seit: Aug 2003
Ort: Hundehütte
Beiträge: 5.293
derHund ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
nix mit header neu aufrufen! das macht man schön brav mit einer for schleife,
Zitat:
und "normaler" Vergleich liegt dem Server schon fast lahm!
Zitat:
könntest du um einen timeout zu vermeiden
Zitat:
du kannst dir ja die infos häppchenweise aus der db holen,
Zitat:
Gehet nicht, ich kriege dem Müll auf dem Tisch und muss mit leben
__________________
Die Zeit hat ihre Kinder längst gefressen
Mit Zitat antworten
  #8 (permalink)  
Alt 25-02-2004, 08:25
Alexis_
 Newbie
Links : Onlinestatus : Alexis_ ist offline
Registriert seit: Feb 2004
Beiträge: 4
Alexis_ ist zur Zeit noch ein unbeschriebenes Blatt
Standard

quinn,
die Daten (Strings) kommen nicht aus db sondern aus *.txt / ASCII-Datei (jede zwischen 20 und 35 MB), werden mittels reguläre Ausdrücke rausgefiltert und in Array (Array1) geladen. Daraus soll eine Liste (ebenfalls *.txt) entstehen. Die wächst auch mit jeden Durchlauf (Array2), jetzt schon 30MB. Die Einträge dürfen sich aber in der Liste nicht wiederholen. Ich muss die Liste mit neuen Einträgen vergleichen und nur wirklich neue Daten (Array3) an die Liste anhängen.

Ein Durchlauf dauert jetzt schon mit CPU 600MHz 20min, der Speicher ist auch ziemlich ausgelastet. Meine Frage war wie kann ich das ganze effizienter und sicherer machen, die Datenquelle kann ich aber nicht ändern. Die sind wie sie sind und ich muss mit leben.
Mit Zitat antworten
  #9 (permalink)  
Alt 25-02-2004, 08:34
derHund
 PHP Master
Links : Onlinestatus : derHund ist offline
Registriert seit: Aug 2003
Ort: Hundehütte
Beiträge: 5.293
derHund ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hmm,

array2 und array3 kannst du zumindest nachträglich in eine db packen, array2 soll ja wohl erhalten bleiben? und array1 ist immer neu?

ne txt-liste kannste dann nebenbei erstellen ...
__________________
Die Zeit hat ihre Kinder längst gefressen
Mit Zitat antworten
  #10 (permalink)  
Alt 25-02-2004, 08:36
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

hast du denn ne datenbank?

wenn ja, lade das array doch da rein
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #11 (permalink)  
Alt 25-02-2004, 10:07
quinn
 Newbie
Links : Onlinestatus : quinn ist offline
Registriert seit: Jan 2004
Beiträge: 22
quinn ist zur Zeit noch ein unbeschriebenes Blatt
Standard

dann hast du nicht viele möglichkeiten. weli die datenmenden sind immer riesig. du brauchst eine datenbank, oder zumindest eine struktur. wenn du die daten als viele kleine txt files speicherst, die nach dem Anfangsbuchstaben der Email adressen sortiert sind, dann kannst du die datenmengen minimieren.

daten einlesen, in ne datenbank packen und nach dem verarbeiten aus der datenbank eine txt machen geht nicht, wei du keine db hast, oder?
Mit Zitat antworten
Antwort

Lesezeichen


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

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

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

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


 

Aktuelle PHP Scripte

Adsman Pro - Werbe-Manager V.1.1.0

Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebigem Format, Textanzeigen und Page-Peels mit umfangreichen Text und Flash-Effekte.

30.07.2019 rhs | Kategorie: PHP/ Bannerverwaltung
HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

30.07.2019 Berni | Kategorie: MYSQL/ Management
Top-Side.de Php Guest Book

Gästebuch mit Smilies, Ip Sperre und Spammschutz. Anzeige von Datum, Name, E-Mail, Homepage und Icq. Html ist deaktiviert.

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

Alle Zeitangaben in WEZ +2. Es ist jetzt 04:32 Uhr.