Bazı alıntı famous words:
"Programcılar ... sık sık iş karmaşıklık ve marifet yolunda, anlaşılabilir, ama felaket eğim sığınmak. Bir program daha büyük bir şey tasarlamak yasak, onların mesleki beceri meydan için yeterli o program karmaşık yaparak yanıt verir. "
Iş yerinde bazı sıradan problem çözerken ben çözmek için nasıl emin değilim bu fikri ile geldi. Ben bu uygulama olmayacak biliyorum, ama ben iyi çözümdür ne kadar çok merak ediyorum. :)
JPG dosyaları ve birkaç garip SWF dosyaları ile bu büyük bir koleksiyona sahip varsayalım. "Büyük" dedim, "Bir kaç bin" demek ile. Her JPG dosyası 200KB etrafında ve SWF birkaç MB boyutunda kadar olabilir. Her gün birkaç yeni JPG dosyaları var. Tüm malzeme toplam boyutu böylece yaklaşık 1 GB, ve yavaş yavaş ama istikrarlı bir şekilde artmaktadır. Dosyalar ÇOK nadiren değiştirilebilir veya silinir.
Kullanıcıların web sayfasında tek tek dosyaların her görebilirsiniz. Ancak onları bir kez onları bir sürü indirmek için izin isteği de var. Dosyaları kullanıcı tarafından koleksiyon filtre onlara (tarih, kategori, vb) bağlı bazı meta var.
Nihai uygulama ardından kullanıcı bazı filtre ölçütlerini belirlemek ve daha sonra tek bir ZIP dosyası olarak gelen dosyaları indirmek için izin olacaktır.
Kriterleri miktarı yeterince büyük olduğundan, tüm olası ZIP dosyaları pre-üretemez ve on-the-fly bunu yapmak gerekir. Başka bir sorun indirme oldukça büyük olabilir ve yavaş bağlantıları olan kullanıcılar için onu bir saat veya daha fazla sürer oldukça muhtemel olmasıdır. "Özgeçmiş" için destek dolayısıyla bir-olması gerekir.
Parlak tarafında ancak ZIP şey sıkıştırmak gerekmez - dosya zaten çoğunlukla JPEG vardır. Böylece bütün süreç daha yoğun CPU, basit bir dosya indirme daha olmamalıdır.
Problemler sonra tespit ettiklerini, böylece şunlardır:
- PHP için yürütme zaman aşımı vardır. Bu komut dosyası kendisi tarafından değiştirilebilir iken, bunu tamamen kaldırarak hiçbir sorun olacak?
- Özgeçmiş seçeneği ile farklı HTTP istekleri için değişen filtre sonuçlarının olasılığı vardır. Koleksiyonu yalnızca büyük oluyor gibi bu, kronolojik sonuçları sıralayarak hafifletilebilir olabilir. Başlangıçta oluşturulan ve senaryo o daha genç dosyalar dikkate olmaz ne zaman isteği URL bundan sonra da bir tarih yer alacak. Bu yeterli olacak mı?
- PHP ile dosya büyük miktarda veri geçen başlı başına bir performans hit olmayacak?
How would you implement this? Is PHP up to the task at all?
Added:
Artık iki kişi geçici bir klasöre ve orada her zamanki dosyaları olarak onları hizmet talep ZIP dosyalarını depolamak için önerdi. Bu gerçekten bariz bir çözüm olsa da, bu olanaksız hale birkaç pratik hususlar var.
ZIP dosyaları genellikle megabayt birkaç onlarca megabayt hundreads değişen, oldukça büyük olacaktır. Bu ZIP dosya boyutu gigabyte üzerinde olacak, yani, aynı zamanda "her şeyi" istemek için bir kullanıcı için tamamen normaldir. Ayrıca orada birçok olası filtre kombinasyonları ve çoğu kullanıcı tarafından seçilen olması muhtemeldir.
Sonuç olarak, ZIP dosyaları (nedeniyle veri ve disk hızı hacmi için) oluşturmak için, ve tüm koleksiyonu, defalarca içerecek oldukça yavaş olacaktır. Bu çözüm bazı mega pahalı SCSI RAID dizi olmadan işe nasıl görmüyorum.