Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Scientist

Calcular tempo de UPLOAD

Recommended Posts

Boa Tarde, como calculo o tempo de upload de um arquivo. O arquivo vai demorar 5 minutos ? 6 minutos para ser enviado ao servidor ?

 

obs: uso o método move_uploaded_file()

Compartilhar este post


Link para o post
Compartilhar em outros sites

pois é.. eu já fiz todo script em jquery para carregar barra de progresso passando apenas o tempo inicial e o tempo final, porém preciso pegar essa informação do upload. Alguma ideia ?

 

obs: não posso usar APC do PHP 5 porque tem que instalar no servidor e como o meu servidor é da locaweb e compartilhado, eles não instalam.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, com JS eu não conheço.

 

Você poderia tentar fazer uma interface em flex/flash.

Abaixo um MXML (Flex) bem simples para poder enviar arquivos.

 

 

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
initialize="initializeHandler(event)"
>

<mx:Script>
	<![CDATA[
		import mx.events.FlexEvent;
		import mx.collections.ArrayCollection;

		[bindable]
		// armazena os arquivos selecionados
		private var arrFiles:ArrayCollection = new ArrayCollection();
		// objeto para selecionar os arquivos
		private var files:FileReferenceList = new FileReferenceList();
		// tempo em que iniciou o upload
		private var startTime:Number;
		// endereço para onde os arquivos devem ser enviados
		private var uploadTargetURL:String = 'http://example.com';

		/**
		 * Processa a fila de arquivos.
		 * 
		 * Envia o primeiro o item da fila
		 * 
		 * */
		private function proccessQueue():void {
			if(arrFiles.length > 0){
				var item:FileReference = arrFiles.getItemAt(0) as FileReference;
				item.upload(new URLRequest(uploadTargetURL), 'arquivo');

				pBar.source = null;
				pBar.minimum = 0;
				pBar.maximum = 1;
				pBar.setProgress(0,1);
			}
		}

		/**
		 * Chamado ao inicializar o componente/aplicação
		 * 
		 * 
		 * */
		private function initializeHandler(event:FlexEvent):void {
			grid.dataProvider = arrFiles;
			files.addEventListener(Event.SELECT, files_selectHandler);
		}

		/**
		 * Chamado ao clicar no botao de enviar arquivos
		 * 
		 * */
		private function btnEnviar_clickHandler(event:MouseEvent):void {
			proccessQueue();
		}

		/**
		 * chamado ao clicar no botão de selecionar arquivos
		 * 
		 * */
		private function btnSelecionar_clickHandler(event:MouseEvent):void {
			files.browse();
		}

		/**
		 * Chamado ao selecionar os arquivos na janela de seleção de arquivos
		 * 
		 * */
		private function files_selectHandler(event:Event):void {
			arrFiles.source = FileReferenceList(event.target).fileList;
			arrFiles.refresh();

			for each(var file:FileReference in arrFiles){
				file.addEventListener(ProgressEvent.PROGRESS, file_progressHandler);
				file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, file_dataCompleteHandler);
				file.addEventListener(Event.OPEN, file_openHandler);
			}
		}

		/**
		 * Chamado ao enviar uma parte do arquivo
		 * 
		 * */
		private function file_progressHandler(event:ProgressEvent):void {
		    var elapsed:Number = (new Date().getTime()) - startTime;
		    var currentSendRate:Number = event.bytesLoaded / elapsed;
		    var timeLeft:Number = (event.bytesTotal - event.bytesLoaded) / currentSendRate;

		    var seconds:Number = Math.round((timeLeft / 1000) % 60);
		    var minutes:Number = Math.floor((timeLeft / 1000) / 60);

		    lblProgresso.text =  'Tempo restante: ' + (minutes < 10 ? '0' + minutes : minutes) + ':' +
		    	(seconds < 10 ? '0' + seconds : seconds);
		}

		/**
		 * Chamado ao receber os dados de confirmação de upload.
		 * 
		 * O script tem que enviar alguma saida para este metodo ser chamado.
		 * 
		 * */
		private function file_dataCompleteHandler(event:DataEvent):void {
			lblProgresso.text = 'Finalizado';
			arrFiles.removeItemAt(arrFiles.getItemIndex(event.target));
			proccessQueue();
		}

		/**
		 * Chamado ao iniciar o upload
		 * 
		 * */
		private function file_openHandler(event:Event):void {
			startTime = new Date().getTime();
			lblProgresso.text = 'Iniciando...';

			pBar.source = event.target;
		}

	]]>
</mx:Script>

<mx:VBox x="0" y="0" width="100%" height="100%">
	<mx:DataGrid width="100%" height="100%" id="grid">
		<mx:columns>
			<mx:DataGridColumn headerText="Nome do arquivo" dataField="name" width="300"/>
			<mx:DataGridColumn headerText="Tamanho" dataField="size"/>
			<mx:DataGridColumn headerText="Data de Modificação" dataField="modificationDate"/>
		</mx:columns>
	</mx:DataGrid>
	<mx:HBox width="100%" horizontalAlign="right">
		<mx:HBox width="100%">
			<mx:Label text="Label" id="lblProgresso"/>
			<mx:Spacer width="100%" height="100%" />
			<mx:ProgressBar width="200" id="pBar" />
		</mx:HBox>
		<mx:Button label="Selecionar Arquivos" id="btnSelecionar" click="btnSelecionar_clickHandler(event)"/>
		<mx:Button label="Enviar para o Servidor" id="btnEnviar" click="btnEnviar_clickHandler(event)"/>
	</mx:HBox>
</mx:VBox>

</mx:Application>

 

 

 

@braços e fique com Deus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

É que neste caso você vai precisar de uma linguagem client-side.

Você poderia tentar usar, então, JQuery com uploadfy

 

É javascript, mas que "por debaixo dos panos" usa flash.

 

@braços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.