Minik isim ve PHP onları aramak için en iyi yol

3 Cevap

Bu PHP kodu aşağıda bir görüntü çekmek ve dosya adı ve dosya uzantısı arasındaki sözcüğü _thumb katacak

Bu dosya kullanıcı fotoğrafı göstermek için bazı sayfalarda 50 kata kadar denir, ben sadece bu örneğin başka bir sunucu üzerinde tam bir yol görüntüye bağlı değil, lütfen, dosya yolu genellikle kullanıcılara yolunu depolayan bir MySQL DB çekilir fotoğraf

Şu anda olsa benim sitede bir çok şey yeniden yaşıyorum ve ben bu kötü bir yol olup olmadığını bilmek isteyen ki?

I store a thumbnail image like this:
filename_thumb.jpg

Yani bir resmini görebilmek için bir sayfada, sadece tam boy görüntü yol var ve ben ekrana görüntüyü görüntülemeden önce dosya içine _thumb bölümünü eklemeniz gerekir.

Would it be better performance to do something like
t_filename.jpg

The data that come from the database is like this:
user/photos/1/23/45/34/filename.jpg

Ben adının kabinin için başparmak kısmını eklemek nerede değişti Yani hala bir sonuç almak için aşağıdaki tüm kodu çalıştırmak zorunda kalacak? Ben DB olsun yolu o kadar iyi içine kaydettiğiniz klasör yapıya sahiptir ve klasörler her zaman farklı olan SADECE bir dosya adı değil nasıl fark edin.

<?php

$file = 'http://file-managers.net/skins/blue/images/actions/view_tree.png';
$fil_ext1 = pathinfo($file);
$fil_ext = $fil_ext1['extension']; 
$fil_explode = '.' . $fil_ext;
$arr = explode($fil_explode, '/skins/blue/images/actions/view_tree.png');
$pic1 = $arr[0] . "_thumb" . $fil_explode;

// will show;
// /skins/blue/images/actions/view_tree_thumb1.png
echo $pic1;

?>

3 Cevap

Böyle bir klasör yapısını tavsiye ederim:

images/
    originals/
    small/
    middle/
    big/

Her resim images/originals/, küçük versiyonları (gerektiği gibi) eklemek ilgili klasörler içinde oluşturulur içine yüklenen alır. Veritabanında sadece orijinal * dosya saklayın.

*) Note that you should create a new random filename, don't use the actual original user-supplied dosya.

Sadece yapmanız görüntüler dahil olmak üzere zaman

echo "images/small/".$filename;  // (pseudocode)

Hiç tasarımını değiştirmek ve görüntüleri yeniden boyutlandırmak gerekir istiyorsanız, o small/, middle/ vb klasörlerini temizlemeye kadar basit ve hatta küçük bir komut ile bunları yeniden oluşturmak veya on-the-fly gibi bir şey ile:

// pseudocode
if (!file_exists('images/small/'.$filename)) {
    create_resized_image($filename, 'small');  // looks for "images/originals/$filename"
}
echo "images/small/".$filename;

Eğer "user/photos/1/23/45/34/filename.jpg" programına bu harita eğer / nasıl kendiniz için görmek gerekir.

Eğer işlem süresi neden veritabanında uzantısı olmadan veri tabanında iki farklı yolları saklamak veya dosya uzantısı ve dosya yolunu saklamak konusunda endişeleriniz varsa. Veritabanına eklerken bir kez işlem yapabilirsiniz bu şekilde. Şahsen ben ikinci yöntemi gibi.

Senin yaptığın basit string işlemleri bile onları 50 kez yapmak yükü bir ton katacak sanmıyorum. Bunu yapıyoruz yolu bana makul görünüyor.

PHP 5.2 veya patlayabilir ile dosya adını almak ile tüm bu iş atlayabilirsiniz üzerinde ise:

$fil_ext1['filename']

yerine.