nasıl php kullanarak dinamik olarak oluşturulan dosyaları düzenlemek için?

4 Cevap

Ben kullanıcı input.one kullanıcı tabanlı sunucu üzerinde şablon dosyalarını depolamak için birçok templates.So oluşturmak ve DB kayıt ile ilişkilendirmek HTML şablon dosyalarını oluşturur ve saklar, bir PHP web sitesi var, ben ne olduğunu-

"Şablonlar" gibi template_id gibi benzersiz otomatik artış id vb onu kim yarattı gibi şablon hakkında diğer bilgileri tutun tablo

for example - if template id is 1001 I convert it to hex which is 03e9 Now I split the hex number into 03 & e9 (after two numbers) becomes folder and e9 becomes file with some extension as "e9.tpl"

Bu benim ID.I ayrı dosyasının yolunu saklamak için ihtiyacım yok şablonu biliyorsanız ben dosya sisteminden şablonu öğrenebilirsiniz nasıl.

iyi bir yaklaşımdır? Bu yaklaşımın bir eksiklikler? Bu daha başka bir yaklaşım var mı?

Veritabanında kendisi dosya yolunu depolama avantajları / dezavantajları nelerdir? Örneğin vb şablonlar hizmet farklı diskleri kullanarak etkinleştirmek için?

4 Cevap

Eğer dizinde dosyası girişleri / inodes tükendi olabilir endişe ediyor, çünkü bunu yapıyorsun? Ext3 olarak pratik sınırı yere yaklaşık 100.000 dosya (32.000 dirs) 'dir.

Anında bir dizin yapısı oluşturma daha iyi $dir = $id % 1000 gibi modulu kullanılarak yapılır ve o Dir yeni şablon koymak olduğunu ($dir/$id.tpl). Bu strateji maks 1000 dirs yaratacak ve böylece mümkün etrafında 100.000.000 dosyaları işlemek için yaptık.

Ben onaltılık değerleri veya altdizgelerin ile karıştırmasını için herhangi bir neden göremiyorum.

If the ID in the DB table is already UNIQUE, why transform the id for the filesystem at all? Just add a file 1001.tpl and you are all set. If you want to have template files sorted into folders, use the User ID (which I assume to be UNIQUE too), so you get folder 124/1001.tpl.

Dağıtım süreci bağlı olarak, uygulama klasörü dışında oluşturulan dosyaları tutmak istiyorsanız, bu yüzden uygulamayı güncellerken yanlışlıkla bunları silmez.

Eğer id almak için veritabanı vurmak varsa, siz de bunun şablonu saklamak kapalı gibi iyi olabilir. Ancak dosya sisteminde saklayarak ile kategorik olarak yanlış bir şey yok. Ben genellikle olur.

Eğer 65.536 vurduğunuzda, 0x10000'a alırsınız. Kodunuz bu işleyebilir emin olun. Sadece açıklık uğruna, 1/1234.tpl: ben gibi 0x1234 depolamak için daha uygun olurdu. Sıralı kimlikleri sayesinde, senin klasörler sırayla doldurmak unutmayın.

Muhtemelen hatta onları hex dönüştürmek istemem. Sen içeri olması muhtemeldir kaç dosya anlamaya ve kaç istediğiniz klasörleri belirlemek için kullanabilirsiniz onları koymak için hangi klasörü belirlemek için bir modül operatörünü kullanabilirsiniz.

Örneğin:

$path = ($id % NUMBER_OF_FOLDERS) . "/$id.tpl"

$id ondalık şablon kimliği olduğu.

Ben farklı klasörler oluşturmak için iki bölüme altıgen ayıran nokta anlamıyorum ... Bu yüzlerce ve sunucu üzerinde tam bir karmaşa olacak farklı klasörlerde yüzlerce oluşturabilirsiniz. Neden sadece gibi dosya adı olarak onaltılık değere sahip tek bir klasörde şablonlar üzerinde saklamayın 03e9.tpl?