Tôi đã tự hỏi liệu có ai biết điều này có thể được thực hiện trong PHP hay không. Tôi đang chạy một kịch bản có liên quan đến việc mở một tệp, lấy 1000 dòng đầu tiên, thực hiện một số nội dung với các dòng đó, sau đó tệp php sẽ mở một phiên bản khác để lấy hàng nghìn dòng tiếp theo và tiếp tục cho đến khi nó kết thúc tệp . Tôi đang sử dụng splfileobject để tôi có thể tìm kiếm một dòng nhất định, điều này cho phép tôi chia nhỏ thành 1000 dòng khối khá tốt. Vấn đề lớn nhất mà tôi gặp phải là với hiệu suất. Tôi đang xử lý các tệp có tối đa 10.000.000 dòng và trong khi nó có 10.000 dòng đầu tiên hoặc quá nhanh, có một sự sụt giảm theo cấp số nhân rất lớn sau thời điểm đó mà tôi nghĩ là chỉ cần tìm đến điểm đó.Xóa các dòng X đầu tiên khỏi một tệp PHP
Điều tôi muốn làm là đọc 1000 dòng đầu tiên, sau đó chỉ cần xóa chúng khỏi tệp sao cho tập lệnh của tôi luôn đọc nghìn dòng đầu tiên. Có cách nào để làm điều này mà không đọc phần còn lại của tập tin vào bộ nhớ. Các giải pháp khác tôi đã thấy liên quan đến việc đọc từng dòng vào một mảng sau đó loại bỏ các mục X đầu tiên, nhưng với mười triệu dòng sẽ ăn quá nhiều bộ nhớ và thời gian.
Nếu bất kỳ ai có giải pháp hoặc đề xuất khác có thể tăng tốc hiệu suất, nó sẽ được đánh giá cao.
Bạn * nghĩ * đã mất thời gian tìm kiếm? – salathe
Tôi nhận xét ra dòng mà lặp dòng truy cập để nó luôn chạy 1000 đầu tiên và nó chạy theo cấp số nhân nhanh hơn.Cộng với điều này được chậm hơn theo cấp số nhân khi nó đi cùng, điều duy nhất thats thay đổi là dòng mà nó đang tìm kiếm. –
Tìm kiếm không nên dùng * theo cấp số nhân * thêm thời gian. Trên quy mô loại nào là sự suy giảm? – salathe