![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 20.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Cześć wszystkim.
Chciałbym wykorzystać PHP do stworzenia skryptu do porównania dwóch plików tekstowych o rozmiarze ~kilkaset MB każdy z linii komend. Struktura obydwu jest mniej więcej taka: ^L RekordA PoleA1 WartośćA1 PoleA2 WartośćA2 PoleA3 WartośćA3 ^L ^L RekordB PoleB1 WartośćB1 PoleB2 WartośćB2 PoleB3 WartośćB3 ^L ... Znak "^L" to Form Feed (0c hex). Kolejność "rekordów" (w powyższym przykładzie są 2: zielony i niebieski, oddzielone ^L^L) jest zmienna w obydwu plikach. Wstępnie zarys tematu widzę tak, że mógłbym: - wczytać obydwa pliki do pamięci RAM do dwóch odrębnych tablic, których poszczególne elementy będą zawierały "rekordy" (dane od ^L do ^L); - porównać potem poszczególne elementy powyższych tablic ("rekordy"). Pytania: 1) Nie wiem w jaki sposób podzielić wspomniane pliki danych na kawałki pod względem elementu ^L. Mógłby ktoś podpowiedzieć rozwiązanie? 2) Czym najlepiej było by porównywać "rekordy"? Chodzi o porównanie znak po znaku (linijka po linijce) danych tekstowych, zastanawiam się nad użyciem polecenia Unix diff... 3) Jakie problemy ewentualnie mogą być związane z wczytywanie tak dużych (~kilkaset MB) plików do RAM-u? Dzięki za wszelką pomoc ![]() Pozdrawiam, Rafał. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Cytat Chciałbym wykorzystać PHP do stworzenia skryptu do porównania dwóch plików tekstowych o rozmiarze ~kilkaset MB każdy z linii komend - kiepski pomysł.Cytat wczytać obydwa pliki do pamięci RAM do dwóch odrębnych tablic - pomysł jeszcze gorszy.Należy parsować plik linia po linii i po wczytaniu każdej linii przesuwać wskaźnik do następnej:
Zakładam, że porównanie będzie n linia z 1 pliku == n linia z 2 pliku? Można zbudować bardziej skomplikowany algorytm w zależności od potrzeb. Podpowiem też, że funkcja fgets pobiera linię z pliku i przesuwa wskaźnik pliku do następnej linii. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli wystarczy Ci informacja czy są takie same czy nie:
md5_file -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 17.06.2025 - 01:24 |