2016-04-11 13 views
1

Basit bir anahtarla 20k - 30k dosya kayıt tutmam gerekiyor: satır başına değer. Başka bir örnek de kullanacağı için dosyayı bir dosyada tutmam gerekiyor. O zaman değerini elde etmek için özel bir anahtar bulmalı ve dosyada bir anahtar: değer yazmalıyım. Aşağıdaki yöntemlerden hangisinin daha hızlı/daha iyi olduğunu veya iyi bir uygulama olduğunu düşündüm. Bir sistem çağrısı kullanarakPHP'de bir dosyayı yazmak ve okumak için sistem çağrılarını kullanmak iyi midir?

$fh = fopen('myfile.txt', 'a') or die("can't open file"); 
fwrite($fh, 'key:value'); 
fclose($fh); 

ikinci ya sahip file_put_contents

file_put_contents('myfile.txt','key:value',FILE_APPEND); 

ve üçüncü: ilk:

dosyaya yazmak için, bunu yapmak için yaklaşık üç yöntemini biliyoruz.

exec("echo key:value >> myfile.txt"); 

Ve ayrıca, bir satır bir dosyayı okumak ve bulmak için bir yapabilirsiniz: kullanma file_get_contents

$filename = 'info.txt'; 
$contents = file($filename); 
foreach($contents as $line) { 
$pos = strpos($line, $key); 
} 

Ve bir sistem çağrısı ile dosya

kullanma

$filename = 'info.txt'; 
$contents = file_get_contents($filename); 
foreach($contents as $line) { 
$pos = strpos($line, $key); 
} 

:

exec("grep $key | wc -l",$result); 
+3

Php işlevlerine yapışır. Bu şekilde kodunuz diğer işletim sistemlerine taşınabilir olacak. –

cevap

1

Sanırım bir veritabanı kullanmayı düşündünüz mü? Çünkü aksi halde tekerleği yeniden icat ediyorsun. Bir veritabanı hızlı arama ve satır düzeyinde kilitleme ile tüm avantajlara sahiptir.

Eğer bir dosya kullanıyorsanız, bunu kendiniz oluşturmanız gerekir.

Bir çeşit veritabanına geçmenizi kesinlikle öneriyorum.

BTW, değerleri değiştiriyorsanız veya sadece dosyaya ekleyip eklemediğinizi belirtmezsiniz.

+0

ayrıca anahtar: değeri olduğundan temel olarak arama yapabilir ve kaldırabilirsiniz. Daha sonra bir ihracata ihtiyacınız varsa, CSV dışa aktarma işlemi taşınabilir hale getirecektir. Kesinlikle DB çözümüne bakmalısınız. Tüm mevcut webapp (nodejs, ruby, vb ..) DB okuyabilir ve db okuma ms cinsinden. – azngunit81

+1

Bu bir yorum olmalı ve sorulan soruya cevap vermediğinden bir cevap olmamalıdır. – Veve

+0

Sayın Mark, yorumunuz için teşekkürler. İlk: Anahtar varsa, eklenmeyecekse yeni zaman damgası ile değiştirilecektir. İkincisi: Benim düşünceme göre tek bir tablo ile çalışacağım db ... bir dosya kullanmak aynı şeydir çünkü ilişkisel sorgular yapmıyorum ve daha hızlı olmalı. Lütfen, bunun hakkında ne düşündüğünüzü bana bildirin. Bir dosya yerine bir db kullanmak için iyi/teknik bir neden var mı? – user2977753

İlgili konular