Page 1 of 1

Getting percentage complete while downloading

Posted: Mon Oct 01, 2007 5:12 am
by pinkygoyal
I have a problem, while copying a folder from one location to other, i need to show the percentage complete for the copy. i am sending 2 ajax requests , 1 for copy and 2nd for getting %complete. but i am nt able to run the script of percentage complete. this script runs after first script finishes its execution.can anyone help me out.

Posted: Mon Oct 01, 2007 9:21 am
by feyd
pinkygoyal wrote:can anyone help me out.
Not without seeing code..

Posted: Mon Oct 01, 2007 9:43 am
by pinkygoyal
feyd | Please use

Code: Select all

,

Code: Select all

and [syntax="..."] tags where appropriate when posting code. Your post has been edited to reflect how we'd like it posted. Please read:  [url=http://forums.devnetwork.net/viewtopic.php?t=21171]Posting Code in the Forums[/url] to learn how to do it too.[/color]


this is getTheBackUpPercentComplete.php script

Code: Select all

<?php


$destination = $_GET['backUpDirectory'];

$precentComplete = 0;  

ini_set("max_execution_time",0); 

$source = "E:/documents";     

getPercentageComplete($source,$destination);


function getPercentageComplete($source,$destination)
{
    
     $sourceSize = directorySize($source);
     $targetSize = directorySize($destination);     
   
     $percentComplete = $targetSize/$sourceSize * 100;     
        
     echo floor($percentComplete);
    
}


function directorySize($dir)
{

     if ($handle = opendir($dir)) 
     {
         while (false !== ($file = readdir($handle))) 
         {
            if ($file != "." && $file != "..") 
            {
                $path=$dir."/".$file;
                
                if (is_dir($path)) 
                {
                    $filesize+=directorySize($path."/");
                } 
                elseif (is_file($path)) 
                {
                
                    $filesize+=filesize($path);
            
                }
            }
         }
     }
     return $filesize;
}
 
 ?>

here the other script manualBackUpProcessing.php

Code: Select all

<?php

$backUpDirectory = $_POST['backUpDirectory'];

ini_set("max_execution_time",0);

$repositoryBaseDirectory = "E:/documents";

full_copy($repositoryBaseDirectory, $backUpDirectory);     


function full_copy($source, $target)
{
   
    if ( is_dir( $source ) )
    {
        @mkdir( $target );
        
        $d = dir( $source );
        
        while ( FALSE !== ( $entry = $d->read() ) ) 
        {
            

            if ( $entry == '.' || $entry == '..' )
            {
                continue;
            }  
            
            $Entry = $source . '/' . $entry;            
            if ( is_dir( $Entry ) )
            {
                full_copy( $Entry, $target . '/' . $entry );
                continue;
            }
            copy( $Entry, $target . '/' . $entry );
        }
        
        $d->close();
    }
    else
    {
        copy( $source, $target );
    }
    
    
}

    
?>
this the tpl file

Code: Select all

<html>
	<head>
		<title>SvnManage - Manual BackUp</title>
		{include file=includes/meta.tpl}	
  		
		<script type="text/javascript" src="{$folderLevel}{$js}yahoo-min.js">
        </script>
        <script type="text/javascript" src="{$folderLevel}{$js}connection-min.js">
        </script>
        {literal}
        <style>
            .colorClass
            {
                background-color: #1d1;
            
            }
        </style>
        <script>
        
        function startProgress()
        {
            setTimeout("getPercentComplete()", 1000);
        }
                
        var handleSuccess1 = function(o)
        {
            if(o.responseText !== undefined)
            {

                document.getElementById("progressbar").style.width = o.responseText+"%";
                document.getElementById("123").innerHTML = "Back up complete : "+ o.responseText +" %"
                
                if (o.responseText < 99)
                {
                    if(document.getElementById("123").innerHTML != "Back up complete : 100%")
                    {
                        setTimeout("getPercentComplete()", 100);
                    }
                }           
            }
        };
        
        var handleFailure1 = function(o)
        {
                                
        };
                    
                    
        var callback1 =
        {
            success:handleSuccess1,
            failure:handleFailure1,
            argument: { succ:"success", fail:"failure" }
        };
        
        
        function getPercentComplete()
        {

            var dirName = document.getElementById("backupDirectory").value;
            var url = "getTheBackUpPercentComplete.php?backUpDirectory="+dirName;

            var request = YAHOO.util.Connect.asyncRequest('GET',url,callback1,null);    
            var callStatus = YAHOO.util.Connect.isCallInProgress(request);                                     
        }
        
        </script>
        {/literal}      
                              			
		</head>
		<body>
			{include file=includes/header.tpl}	
			{include file=includes/menu.tpl}	
			<div class="leftMenu"></div>
			<div class="content">
			
			<center>
                {$errorString}
                {$successString}
            </center>
             <br>   
	
			<table border=0 align="center" class="greytablesmall" cellpadding="5" cellspacing="3">
				<tr class="heading">
					<td colspan="2">Manual Backup</td>
				</tr>	
			
				 <tr>
            <td> <span class="normalText">Type : </span></td>
            <td > <span class="normalText">Full</span></td>
        </tr>
        <tr>
            <td > <span class="normalText">Back up Directory : </span></td>
            <td><span class="normalText"><input type="text" id="backupDirectory" name="backupDirectory"></span></td>
        </tr>
				
						
							<tr>
							<td> 
							<span class="normalText">
							<input type="button" name="add" onclick="startBackUp();" value="Start Backup" class="button" id="add" onMouseover="hover('add');" onMouseDown="down('add');" onMouseOut="out('add');">
					         </span>
							</td>
						
							</tr>

					</table>
                    
                    
		            <br>
                    
                    <table border="0" align="center" class="greytablesmall" cellpadding="0" cellspacing="0">
                    <tr>
                        <td height="15px" >
                           <table border="0" id="progressbar" width="0%">
                                <tr>
                                    <td></td>
                                <tr>
                           </table>
                        </td>
                    </tr>

                    </table>
                    
                    <span id="123"></span>
                    
                
                                {literal}
                            <script type="text/javascript">
                            
                            var timerId ;
                            var handleSuccess = function(o)
                            {
                               
                                    document.getElementById("progressbar").style.width = "100%";
                                    document.getElementById("123").innerHTML = "Back up complete : 100%"
                                
                                //clearTimeout(timerId);      
                            };
        
                            var handleFailure = function(o)
                            {
                                //clearTimeout(timerId);      
                            };
                    
                    
                            var callback =
                            {
                                  success:handleSuccess,
                                 failure:handleFailure,
                                 argument: { succ:"success", fail:"failure" }
                            };
        
        
                            function startBackUp()
                            {
                                   window.parent.startProgress();
                                   var dirName = document.getElementById("backupDirectory").value;
                                   var url = "manualBackUpProcessing.php";
                                   var postData = "backUpDirectory="+dirName ;
                                   var request = YAHOO.util.Connect.asyncRequest('POST',url,callback,postData);    
                                   
                                   var callStatus = YAHOO.util.Connect.isCallInProgress(request);  
                                   
                                   if(callStatus)
                                   {
                                   
                                      document.getElementById("progressbar").className = "colorClass"; 
                         
                                      timerId = setTimeout("getPercentComplete()",1000);
                                      timerId = setInterval("getPercentComplete()", 3000);
                                   
                                   }
                            }
                    
                
                            </script>
                            {/literal}
       
            
			
		</div>
        
         
       {include file=includes/footer.tpl}	
	</body>
</html>

here manualBackUpProcessing.php page copy the folder.


feyd | Please use

Code: Select all

,

Code: Select all

and [syntax="..."] tags where appropriate when posting code. Your post has been edited to reflect how we'd like it posted. Please read:  [url=http://forums.devnetwork.net/viewtopic.php?t=21171]Posting Code in the Forums[/url] to learn how to do it too.[/color]