note 83495 added to function.copy

From: 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

« previous php.notes (#139946) next »