Çok büyük bir dizinin alınıyor bilgisi

1 Cevap php

Ben Linux'un 32.000 alt sınırını vurdu. Bu benim PHP komut ile sorunlara neden ve ben tekrar olmasını istemiyorum.

Basit bir çözüm benim PHP betikleri başka bir alt dizin oluşturmak için denemeden önce mevcut alt sayısını kontrol sahip olmaktır.

Ben böyle bir kontrol yapmak için gördüğüm tüm fikirleri bütün dizin yineleme ve her klasör sayma içerir. Benim endişe göz önüne alındığında, çok büyük dizinleri ile içerdiği dosya / klasör sayısını almak için daha iyi bir yolu var mı?

Bonus soru: Bir dizinin disk kullanımını bulmak için yinelemeli olmayan bir yol da var mı?

Thanks in advance! Brian

1 Cevap

Daha iyi bir yol Hiç tek bir dizinde 32000 dosya var olacak bir yolu yok yani dizin düzeni tasarlamaktır. Aslında, ben bir dizinde hatta 1000 dosya çok olduğunu öneririm.

Ben genellikle bu sorunun almak yaklaşım dizin hierarhy ekstra düzeyleri içerir. Tipik bir yol şu anda tek bir dizinde saklıyorsanız dosya adlarını almak ve iç içe dizinlere karşılık parçalara bölmek için. Yani, sizin gibi dosyaları bir grup varsa

xyzzy
foo
bar
blah

aslında olduğu gibi bunları saklayabilir

x/xyzzy
f/foo
b/bar
b/blah

ve benzerleri. Birden dizin düzeyleri için bu uzatmak, ya da bu yaklaşımın genişliği karşı derinliğini kapalı ticaret için, alt dizinleri bölmek için birden fazla karakter kullanabilirsiniz.

Muhtemelen 32k dosya limiti olmayan bir dosya sistemi kullanmak önerileri alacaksınız. Burada teklif ediyorum gibi Şahsen, hatta böyle bir dosya sistemi ile, hep bir düzeni kullanmak istiyorsunuz. Genellikle (hatta ls tamamen ağır olur) dosyaların çok büyük sayılarla dizinlere komut satırı araçları ile etkin çalışması için neredeyse imkansız, ve manuel keşif bu tür her zaman geliştirme, hata ayıklama sırasında gerekli olan ve zaman normal çalışma sırasında zaman.