Kamera Prvá
Kamera Prvá

Reputation: 49

PHP copy images according to time

I want to copy images from one folder to another on server, now I use this code:

<?php
function read_dir($dir)
{
   $list = array();
   if (is_dir($dir)) 
   {
     if ($handle = opendir($dir)) 
     {
        while (false !== ($file = readdir($handle))) 
        {
           if ($file != "." && $file != "..") 
           {
               $list[] = $file;
           }
        }
     }
     closedir($handle);
   }
   return $list;
}
$src="oldfolder";
$dest="newfolder";
$list= read_dir($src);
foreach($list as $key => $val)
{
   copy("$src/$val","$dest/$val");
}
echo "Done";
?>

But I need to copy just images selected by time - for example images uploaded between "now" and 5 min. ago..

Can anyone help? Thanks

Now my PHP is like below. It seems that it run with "Done" result, but nothing is copied..

<?php
function read_dir($dir)
{
   $list = array();
   if (is_dir($dir)) 
   {
     if ($handle = opendir($dir)) 
     {
        while (false !== ($file = readdir($handle))) 
        {

         $fpath = 'oldfolder'.$file;
         if (file_exists($fpath)) {

           if($file != "." && $file != ".." &&                 
DateTime::createFromFormat('U', filemtime($file)) < new DateTime("-5 
minutes")) 
           {
               $list[] = $file;
          }
          }
        }
     }
     closedir($handle);
   }
   return $list;
}
$src="oldfolder";
$dest="newfolder";
$list= read_dir($src);
foreach($list as $key => $val)
{
   copy("$src/$val","$dest/$val");
}
echo "Done"; 
?>

Upvotes: 0

Views: 67

Answers (2)

Kamera Prv&#225;
Kamera Prv&#225;

Reputation: 49

So this is my code, that works for me well - copy images between folders according to time (- 5 sec) set by other code in "time.txt" file:

 <?php
 function read_dir($dir)
 {
 $list = array();
 if (is_dir($dir)) 
 {
 if ($handle = opendir($dir)) 
 {
 while (false !== ($file = readdir($handle))) 
 {
 $fpath = 'oldfolder/'.$file;
 if (file_exists($fpath)) {

 $subor = fopen("./time.txt", "r"); 
 $cas_txt=fgets($subor, 11);
 fclose($subor);
 $cas_zac = DateTime::createFromFormat('U', $cas_txt)->modify('-5 seconds');
 if ($file != "." && $file != ".." && DateTime::createFromFormat('U', 
 filemtime($fpath)) > $cas_zac)
 {
 $list[] = $file;
 }
 }
 }
 }
 closedir($handle);
 }
 return $list;
 }
 $src="oldfolder";
 $dest="newfolder";
 $list= read_dir($src);
 foreach($list as $key => $val)
 {
 //copy file to new folder
 copy("$src/$val","$dest/$val");
 }
 echo "Done";
 ?>

I have two more questions:

Please how can I rotate images in 180° by or after copy? Is it possible in one php code?

How can I send multiple files - images from my code - like an attachments by mail in php?

Thanks for your help.

Upvotes: 1

fred727
fred727

Reputation: 2834

You should use the filemtime function

Upvotes: 0

Related Questions