Farklı sunuculara statik bir URL noktayı nasıl?

10 Cevap php

Bir dosya yükleme sitesi Im çalıştırmak için çoklu sunucu desteği bina Im. Görüntüler yüklenirken cron yürütür (her 10 dakika) ve ilk 10 dakika boyunca, onlar ikamet edecek, böylece depolama sunucuları taşır ve hizmet kadar .... onlar, ana ön uç sunucuda thumbnailed ve saklanır ana ön uç sunucusu kapalı.

Bir dosya yüklendiğinde, kullanıcılar embed kodları verilir ... html sayfası tam boyut, bir küçük resim url + bağlantısı olduğu. Yani http://www.domain.com/file-ID linkler http://www.domain.com/temp_content/filename.jpg gibi bir şey olabilir

10 dakika içinde, http://www.domain.com/temp_content/filename.jpg alışkanlık var dışında, o olacak http://server1.domain.com/thumbs/filename.jpg

kullanıcı orijinal kod yakaladı eğer ... başparmak dosya kırılmış olacak.

Ben cron olmadan, hedefine dosya taşımak OLABİLECEK, ancak bu zaman alacak ve hareket tamamlanana kadar komut gecikme olacaktır. Ben de, kullanıcıların bu gibi komutları çalışıyor olması sevmiyorum, ben daha çok sunucu olurdu düzenli aralıklarla bunları yapmak.

Ben başka bir şey?

10 Cevap

Siz temp_content içinde dosya varsa kontrol etmek için. Htaccess bir mod_rewrite komutunu kullanın, ve eğer bu olmuyorsa, redirect them to the new location o olabilir.

Eğer bir veritabanı image_name / image_location ve veritabanı ayrıntıları görüntüleri hizmet için genel bir PHP komut dosyası saklamak düşündünüz mü?

çok basit:

i dosyalar için yolları sevmiyorum, bu yüzden onu değiştirdim. ^ _ ^

create the link to go to the main storage immediately. http://www.domain.com/file/filename.jpg

ana sunucu üzerinde şöyle bir kural setine kullanın

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} /file/(.+)
RewriteRule ^/file/.+ /temp_content/%1 [L,R]

Ben bunları bilmek mümkün olacaktır eminim çünkü gerçekten, durum verilen görebildiğim tek seçeneği, kullanıcıların gerçek URL vermektir. Daha sonra aslında 10 dakika için linki kullanınız olamaz kullanıcıları bilgilendirmek gerekir.

Bir fikir bir dünyada, ben size link kullanıcıların erişimine izin vermek için ihtiyaç verilen nihai dinlenme yerine doğrudan bu dosyayı koyarak görecekti.

Nasıl bazı JavaScript hakkında?

<img src="http://www.domain.com/temp_content/filename.jpg"
onerror="this.src='http://server1.domain.com/thumbs/filename.jpg'">

Ben bu sorunu nasıl olacak görmüyorum. Eğer yaşıyorsanız kullanıcı yükleme konumları yere doğru bir kayıt saklanmalıdır dosyaları? Bunları doğru oluşturmak zaman ve sayfalar, bu kayıtları kontrol edilmelidir? Neden sadece onlar üzerinde konum ne sunucu belirten başka bir alan eklemek değil. Sonra sadece bu dosyayı hareket bitince cron görev kaydı güncelleştirir emin olun?

Bu bir ağ kesmek için yalvarır şey türüdür. Temel olarak, etki alanı tarafından işaret ve bir özel yönlendirme şey uygun konağa paketlerini ileten. Bu çirkin

Onlar bu tür bir şey etkinleştirmek için topoloji kurmak için nasıl bilemez millet çünkü tüm dürüstlük olsa da, bu, ServerFault için büyük bir sorudur.

Yerlere görüntü adlarını eşleştirmek için bir veritabanı kullanın. Modern veritabanları önbelleğe yapmak. Eğer bu performans kötü olduğunu bulmak IF, ayrıca bellekte basit bir karma tablo önbellek olabilir - bu ile (~ haritalama başına 256 bayt varsayarak) RAM 500MB yılında ~ 2000000 isim-> Yer eşleştirmeleri saklamak saklamak olabilir.

, Elinden dosyaları sunmaktadır komut dosyası için

  1. (Aslında yerden byte okumak ve müşteriye bayt göndermek) dosyasını hizmet vermektedir.
  2. Farklı bir sunucu üzerinde gerçek konumuna müşteri yönlendir.

Şu anda yaklaşık 10 dakika süre sonra sitemize amazon s3/cloudfront tüm yüklendiği medya taşımak ve yeni bir yere yönlendirmek için 2 şey bir arada yapmak.

kamu varlıklarının (başparmak, vs ..) için, biz medyanın yeni konuma (örneğin server1.site.com/media/1.jpg) ile ana öğenin tanımını önbelleğe.

özel varlıklar için, istekleri sonra auth'd s3 url bir 302 yönlendirme sorunları, kimlik denetleyen bir komut dosyası için yapılır.

Uzun lafın kısası, memcache yeni konumunu saklamak, orijinal dosya için 404, bir komut dosyası için mod_rewrite boru var, o zaman 302 yeni konuma yönlendirir.

Cron sunucular arasında dosya yük dengeleme hakkında bir şey "karar" değildir. Cron bir eceli bir komutu yürütür.

Nerede aslında yük sunucular arasında görüntü dengeleme yapar mantığı nedir? Bu mantıkla yük dengeleme kısmı yükleme kolları komut dosyası tarafından yapılabilir? Cron işi yine son sunucusuna yükleme sunucudan görüntünün gerçek hareketli işleyebilir.

Bu şekilde kullanıcı yükleme doğrulamak için bir "geçici" konumu ile sunulabilir. Yükleme onayladıktan sonra, kullanıcı görüntüye bir "son" bağlantısını, ve yaklaşık bir mesaj alacağı "o yerde 'canlı' olarak görüntü için 10 dakika beklemeniz gerekebilir."