Mam następujący kod:pamięci wyczerpany błędu json_parse PHP
<?php
$FILE="giant-data-barf.txt";
$fp = fopen($FILE,'r');
//read everything into data
$data = fread($fp, filesize($FILE));
fclose($fp);
$data_arr = json_decode($data);
var_dump($data_arr);
?>
Plik gigant-data-barf.txt jest, jak sama nazwa wskazuje, to ogromny plik (to 5,4MB teraz, ale może pójść do kilku GB)
Kiedy wykonać ten skrypt, pojawia się następujący błąd:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 71 bytes) in ........./data.php on line 12
Spojrzałem na możliwych rozwiązań, i zobaczyłem to:
ini_set('memory_limit','16M');
i moje pytanie brzmi, czy istnieje ograniczenie, jak dużą mam ustawić pamięć? Czy istnieje lepszy sposób na rozwiązanie tego problemu?
To może nie być zadanie PHP doskonale nadaje się do. Czy możesz korzystać z narzędzi wiersza poleceń? –
płaskie przechowywanie pliku o takim rozmiarze spowoduje wiele problemów. Użyj sqlite lub mysql. jeśli plik zawiera tylko jedną zmienną, która została zakodowana przez json i jest tak wielka, jest mało prawdopodobne, że będziesz w stanie rozwiązać ten problem. json nie jest przeznaczony dla tak dużych plików. Użyj bazy danych lub przechowuj ją w CSV lub przechowuj każdy wiersz w jsonie zamiast całej rzeczy. – Jason
Jedynym problemem jest to, że ktoś eksportuje mi całą bazę danych w formacie JSON ... –