note 83495 added to function.copy
| From: | jyotsnachannagiri at gmail dot com | Date: | Wed, 28 May 2008 15:22:16 +0000 |
| Subject: | note 83495 added to function.copy | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-139946@lists.php.net to get a copy of this message | ||
I modified the functions posted by mzheng at [s-p-a-m dot ]procuri dot com. Might somebody is
looking for to upload only files which have been modified for the last two days like that...
<?php
function dircopy($src_dir, $dst_dir,$UploadDate=false, $verbose = false, $use_cached_dir_trees =
false)
{
static $cached_src_dir;
static $src_tree;
static $dst_tree;
$num = 0;
if(($slash = substr($src_dir, -1)) == "\\" || $slash == "/") $src_dir =
substr($src_dir, 0, strlen($src_dir) - 1);
if(($slash = substr($dst_dir, -1)) == "\\" || $slash == "/") $dst_dir =
substr($dst_dir, 0, strlen($dst_dir) - 1);
if (!$use_cached_dir_trees || !isset($src_tree) || $cached_src_dir != $src_dir)
{
$src_tree = get_dir_tree($src_dir,true,$UploadDate);
$cached_src_dir = $src_dir;
$src_changed = true;
}
if (!$use_cached_dir_trees || !isset($dst_tree) || $src_changed)
$dst_tree = get_dir_tree($dst_dir,true,$UploadDate);
if (!is_dir($dst_dir)) mkdir($dst_dir, 0777, true);
foreach ($src_tree as $file => $src_mtime)
{
if (!isset($dst_tree[$file]) && $src_mtime === false)
mkdir("$dst_dir/$file");
elseif (!isset($dst_tree[$file]) && $src_mtime || isset($dst_tree[$file])
&& $src_mtime > $dst_tree[$file])
{
if (copy("$src_dir/$file", "$dst_dir/$file"))
{
if($verbose) echo "Copied '$src_dir/$file' to
'$dst_dir/$file'<br>\r\n";
touch("$dst_dir/$file", $src_mtime);
$num++;
} else
echo "<font color='red'>File '$src_dir/$file'
could not be copied!</font><br>\r\n";
}
}
return $num;
}
function get_dir_tree($dir, $root = true,$UploadDate)
{
static $tree;
static $base_dir_length;
if ($root)
{
$tree = array();
$base_dir_length = strlen($dir) + 1;
}
if (is_file($dir))
{
if($UploadDate!=false)
{
if(filemtime($dir)>strtotime($UploadDate))
$tree[substr($dir, $base_dir_length)] = date('Y-m-d
H:i:s',filemtime($dir));
}
else
$tree[substr($dir, $base_dir_length)] = date('Y-m-d H:i:s',filemtime($dir));
}
elseif ((is_dir($dir) && substr($dir, -4) != ".svn") && $di =
dir($dir) )
{
if (!$root) $tree[substr($dir, $base_dir_length)] = false;
while (($file = $di->read()) !== false)
if ($file != "." && $file != "..")
get_dir_tree("$dir/$file", false,$UploadDate);
$di->close();
}
if ($root)
return $tree;
}
$UploadDate = '2008-05-23 13:34:46';
dircopy("/var/www/test", "/var/www/live",$UploadDate);
?>
----
Server IP: 66.207.199.35
Probable Submitter: 75.152.99.169
----
Manual Page -- http://www.php.net/manual/en/function.copy.php
Edit -- https://master.php.net/note/edit/83495
Del: integrated -- https://master.php.net/note/delete/83495/integrated
Del: useless -- https://master.php.net/note/delete/83495/useless
Del: bad code -- https://master.php.net/note/delete/83495/bad+code
Del: spam -- https://master.php.net/note/delete/83495/spam
Del: non-english -- https://master.php.net/note/delete/83495/non-english
Del: in docs -- https://master.php.net/note/delete/83495/in+docs
Del: other reasons-- https://master.php.net/note/delete/83495
Reject -- https://master.php.net/note/reject/83495
Search -- https://master.php.net/manage/user-notes.php