Öncelikle böyle bir sistemi kendin yazıp ve cgi değilde php ile yapmak istiyorsan benimde izlediğim adımları izlemen gerekecek .. SSH ile server a root yetkin olması gerekiyor.. Bağlandıktan sonra aşağıdan kurulumu gerçekleştirelim..

http://pecl.php.net/package/uploadprogress
Yukarıdaki adresten son olan bir versionu indirmelisin yada..
wget http://pecl.php.net/get/uploadprogress-1.0.1.tgz
tar xvzf uploadprogress-1.0.1.tgz
cd  uploadprogress-1.0.1
phpize
./configure
make
make install
Bu işlemleri yaptıktan sonra en son make install dediğinde aşağıdaki çıktıyı alacaksın
Installing shared extensions: /usr/lib/php/extensions/no-debug-non-zts-20060613/.
Bunu kopyala lazım olacak .. Sonra php.ini dosyanı açıp editlememiz gerekecek.. Peki benim server da bir çok php.ini dosyası var hangisi gerçeği diye soruyorsan onuda aşağıdaki kod ile bulacaksın..

php -i | grep ini
Düzenlemek için açtıktan sonra extension_dir bölümünü bulup yolunu yukarıda bize verilen değeri giriyoruz. Yani

extension_dir = "/usr/lib/php/extensions/no-debug-non-zts-20060613/"
Değerleri girdikten sonra php.ini dosyamızı kapatmadan eklememiz gereken bir kod daha var oda aşağıda verdiğim kodu ekleyeceğiz. ( Nereye Eklediğiniz fark etmez )
extension=uploadprogress.so
Kaydedip çıkıyoruz ve Apache yi restart yapıyoruz.

Kurulu olup olmadığını boş bir php sayfasına phpinfo(); yazıp görebiliriz . Böylelikle uploadprogress i kurmuş olduk.

Şimdi bu uploadprogress i nasıl kullanacağımıza gelelim

Daha önce kendim hazırladığım bir sistemin kodlarını vereceğim sana eminim çok faydası olacaktır
Öncelikle jQuery kütüphanesini kullandığım için direkt kodları o şekilde vereceğim..

dosya.php
	if (@$_GET['id']) {
		echo json_encode(uploadprogress_get_info($_REQUEST['id']));
		exit();
	}

	if (@$_POST['UPLOAD_IDENTIFIER'])
		exit();
		
		$uuid = uniqid();
<script>
var progress_key = '<?=$uuid;?>';
			function beginUpload() {
				var i = setInterval(function() { 
					$.getJSON("dosya.php?id=" + progress_key, function(data) {
						if (data == null) {
							clearInterval(i);
							location.reload(true);
							return;
						}
						var percentage = Math.floor(100 * parseInt(data.bytes_uploaded) / parseInt(data.bytes_total));
						$("#uploadprogressbar").progressBar(percentage);
						var yazi = 'Toplam Boyut : <b>'+bytes(data.bytes_total)+'</b> - Yüklenen : <b>'+bytes(data.bytes_uploaded)+'</b>';
#yazi olarak verdiğim değişkene veriler gelir gelmez byteup kimlikli div e yazdırıyorum böylelikle her kademede hem yüklediği kb ı hemde toplam boyutu yazdırmış oldum.
						$("#byteup").html(yazi);
					});
				}, 1500);

				return true;
			}
</script>
İki koduda tek php dosyasına ekliyorsun ve aynı sayfaya bir tane form oluşturup post işlemi yaptırıyorsun. Tabi post işlemini yaptırırken onSubmit="beginUpload();" unutmayalım

Kısaca anlatmaya çalıştım bir upload progress i kendimiz nasıl yapabiliriz Hazırları bana göre değil ben kendim yapmak istiyorum diyenler için birebir umarım bu yazıdan bir çok kişi faydalanır..

Takıldığınız bir yer olursa konuya yazın cevap vereyim arkadaşlar
Saygılar..

Mesut Eyrice

(önemli olan yerleri kalın ile belirttim arkadaşlar.)