PHP ile Birçok küçük Files içine büyük bir dosya Arası

0 Cevap php

Ben otomatik olarak benim web sitesinde bazı içeriğini güncellemek için haftada bir kez benim sunucuya itti yaklaşık 95.000 hatları ile 209MB. Txt dosyası var. Sorun böyle büyük bir dosyayı işlemek için yeterli bellek ayrılamıyor, bu yüzden 5.000 hatları her ile daha küçük dosyalar halinde büyük bir dosya kırmak istiyorum.

Dosya küçük parçalara ayrılır kadar ben tüm dosya () kullanamazsınız, bu yüzden SplFileObject ile çalışıyoruz. Ama ben onunla hiçbir yerde aldık. Burada başarmak istediğiniz bazı pseudocode bulunuyor:

read the file contents

while there are still lines left to be read in the file
    create a new file
    write the next 5000 lines to this file
    close this file

for each file created
    run mysql update queries with the new content

delete all of the files that were created

Dosya csv formatında.

EDIT: Aşağıda verilen cevaplar çizgi ile dosya okuma için çözüm:

function getLine($number) {
    global $handle, $index;
    $offset = $index[$number];
    fseek($handle, $offset);
    return explode("|",fgets($handle));
}

$handle = @fopen("content.txt", "r");

while (false !== ($line = fgets($handle))) {
    $index[] = ftell($handle);
}

print_r(getLine(18437));

fclose($handle);

0 Cevap