Tôi có đoạn mã sau:Memory lỗi kiệt sức cho json_parse với 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);
?>
Các tập tin khổng lồ dữ liệu-barf.txt là, như tên gọi của nó cho thấy, một file lớn (đó là 5.4mb ngay bây giờ, nhưng nó có thể đi lên đến vài GB)
Khi tôi thực hiện kịch bản này, tôi nhận được lỗi sau:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 71 bytes) in ........./data.php on line 12
tôi nhìn giải pháp khả thi, và thấy điều này:
ini_set('memory_limit','16M');
và câu hỏi của tôi là, có giới hạn về mức độ lớn nên đặt bộ nhớ của mình không? Hoặc là có một cách tốt hơn để giải quyết vấn đề này?
Đây có thể không phải là công việc mà PHP hoàn toàn phù hợp. Bạn có thể sử dụng các công cụ dòng lệnh không? –
lưu trữ tệp phẳng của tệp có kích thước sẽ khiến bạn gặp nhiều sự cố. Sử dụng sqlite hoặc mysql. nếu tập tin chỉ chứa một biến đã được mã hóa json và nó là rất lớn, nó không chắc bạn sẽ có thể giải quyết điều này. json không có nghĩa là cho các tập tin lớn như vậy. Sử dụng cơ sở dữ liệu, hoặc lưu trữ nó trong CSV, hoặc lưu trữ mỗi hàng trong json thay vì toàn bộ điều – Jason
Vấn đề duy nhất là, ai đó đang xuất khẩu cho tôi toàn bộ DB ở định dạng JSON ... –