Napisałem skrypt, który przyjmuje duże (nawet ogromne) ilości tekstu, na wejściu mam pliki po 256 MB (zmienna, którą można regulować, tu pokazane obrazowo).
Plik ładuję do zmienne przez
potem go przetwarzam. Muszę wyciągać po kilkaset słów, np. 500. Nie byłoby problemu, gdybym mógł te słowa przechowywać w tablicy, jednak przy takiej ilości danych tablice rozrastają się do nieakceptowalnych rozmiarów z punktu widzenia pamięci systemu. Po podzieleniu pliku na słowa, tablica 'zajmuje' ok. 8GB RAM przy dedyku z 32GB.
Rozwiązaniem jest korzystanie ze stringów, znalazłem pewne rozwiązanie, jednak nie chce działać tak, jak to założyłem.
Mianowicie:
Gdzie $_wordLimit to ograniczenie słów dla wyrażenia, a $_content to string z załadowaną zawartością pliku.
Rozwiązanie te prawie działa. Prawie, bo zamiast zwracać mi np. 500 pierwszych wyrazów, zwraca owego stringa bez tych wyrazów.
Próbowałem już różnych regex'ów, jednak nie udało mi się znaleźć odpowiedniego rozwiązania.
PS. Jeszcze raz zaznaczam, że operacje na tablicach odpadają.
PS2. Próbowałem też kombinować z zapisywaniem słów do bazy (SQLite3), jednak wydajność czasowa takiego rozwiązania jest tragiczna.