2012-03-02 22 views
5

Resim yüklemeleri ile ilgilenen bir PHP betiği olan bir sunucuya merhaba. Tüm görüntüleri indirdikten sonra bunları sıkıştırır ve bir kullanıcı bunları indirebilir.Monitör Ayrı sunucuda zip ilerlemesi

Bu işlemden yararlanmak için, bir kullanıcı web sayfasındaki bir düğmeyi tıklayıp web siteme bu işlemi başlatan başka bir sunucuya bildirmesini söyler. Bu, isteklerle ilgilenen web sunucusu, dosya indirme/sıkıştırma işlemleriyle uğraşmaz ve zaman aşımına uğramaz.

Sıkıştırma tamamlandığında kullanıcıyı bilgilendirmek için kullanıcı web sayfasındaki sıkıştırma işleminin ilerleyişini nasıl anlatabileceğimi merak ediyordum?

cevap

2

"Oluşturulacak zip dosyası" ile aynı ada sahip, ancak başka bir uzantıyla birlikte bir kuyruk dosyası yapardım.

İndirme dosyasını oluşturan sunucunuzda, komut dosyasının aynı ada sahip başka bir dosya oluşturmasına izin verin, ancak uzantı olarak durum kodunu yazın. (ex hazır olduğu için ilerleme ve 123456789.DON anlam 123456789.PRO) Şimdi .DON başlangıç ​​dosyasını kılmadan, .pro sonra bu dosya adını güncelleyebilirsiniz zip dosyası yapar ve bitmiş script)

web sunucunuzda bir PHP betiğini okuyan bir ajax çağrısı yapın; orada

dosyası: süreç .pro dosya var başlamamış: İŞLEME .DON dosya var: Size ve ne kadar sunucu yükü sizi ajax çağrısı her birkaç saniyede bir kontrol edilebilir

indirme linki, oluşturma istemek.

0

Her x saniyede bir ilerleme isteğinde bulunmak için istemciden ajax yoluyla yoklamayı ayarlayabilirsiniz. Eğer çıkışı/tmp/dosyaya ilerleme can sıkıştırma php komut dosyasında

yanıt php komut dosyasında

zip -v filename.zip file1 file2 file3 > /tmp/tmpid.txt 

gibi, sen tmp çıkış dosyası okuyabilir (örneğin /tmp/zip_af45d26746a4e5bf01.txt) ve ilerlemeyi hesaplar ve tarayıcıya geri döner.

+0

zip -v? bu mantığı kullanarak tüm dosyaların sıkıştırmasının yapıldığı for döngüsüne bir sayaç eklemek ve mevcut öğe arasındaki toplam öğe üzerindeki oranı bulmak ve bir dosyaya çıkarmak en iyisi olurdu. Bundan sonra, yalnızca yüzde farkını döndüren ve buna göre bir çubuğu güncelleyen bir sunucu isteğinde bulunabilirsiniz. – mirugai

0

Zip() ile zip dosyasının durumunu sorgulama fikri, benim için büyük zip dosyaları yaratan bir proje için mükemmeldi.

exec("zip -qdgds 10m output.zip file1.php file2.php > log_dot.txt"); 

ve şimdi başka ajax komut anketler (dosya boyutu genel dosya ve nokta * 10MB her) Zip oluşturulması fiili süreci hesaplamak:

ben şöyle bir ifade fermuar komut kullanılır dosya.

Belki başka manuel yardım birisi php çok zip-maual