2013-11-02 3 views
0

есть общий диск с сервером; в этом общем диске есть несколько изображений, которые регулярно обрабатываются отделом фотографии. Мне нужно написать свой веб-сервис и использовать планировщик для его вызова (скажем, каждую среду), и если есть любые новые изображения (с последнего вызова (проверка)), я должен использовать их для показа на веб-сайте. Я сомневаюсь, что о своей стратегии, я хотел бы иметь подтверждение, чтобы убедиться, что я на правильном пути:Как получить только новые изображения на еженедельной основе - PHP

моя стратегия:

1) Я использую ScanDir РНР для сканирования диска, чтобы получить все изображения в этой конкретной папке 2) когда я получаю новые изображения, я помещаю их в базу данных по их идентификатору (изображения сохраняются на основе идентификаторов). 3) На следующей неделе я запустил свой веб-сервис, который я проверяю, чтобы увидеть, находится ли изображение в базе данных или нет. если не добавить его и считать его новым ...

У вас есть идеи?

+0

Возможно, вы можете загрузить их в отдельный каталог. Когда вы проверяете этот каталог для файлов, вы можете переместить файлы в настоящий каталог. Таким образом, вы знаете, что все файлы в отдельном каталоге являются новыми. – Jeemusu

ответ

1

Ваш подход звучит отлично. Однако вы можете сделать это без базы данных, посмотрев дату создания файла; просто предположите, что какой-либо файл создан совсем недавно, чем в последний раз, когда ваш чек бежал, поэтому любой файл, созданный после прошлой среды, является новым.

$dirPath='/path/of/your/images'; 
$files=scandir($dirPath); 
//assuming this is in fact once a week, 
//adjust '$lastCheck' based on the schedule this will run 
$lastCheck=strtotime("-7 day"); 
foreach($files as $file) 
{ 
    if (is_file("$dirPath/$file") && !is_link("$dirPath/$file")) //make sure its not a directory or symlink 
    { 
     $createTime=filectime("$dirPath/$file"); 
     //check if its older than a week 
     if ($createTime>$lastCheck) 
     { 
      //file is newer than a week 
      $newFiles[]="$dirPath/$file"; 
     } 

    } 
} 

//now $newFiles has all the files from this week, with no DB interaction. 
+0

Спасибо за ваше решение; но я думаю, что это не сработает; отдел фотографии может добавить изображение, которое было создано 2 недели назад, и если они просто скопируют этот файл на общий диск, он не будет зацепиться за новый файл, так как время создания составляет 2 недели назад, хотя это новый файл, правый ? – user385729

+0

Я думаю, что вы по-прежнему в безопасности. Время создания копии будет временем создания копии, а не оригиналом, поэтому, если отдел фотографии, скопированный в 2-недельном файле в ваш каталог вчера, этот скрипт рассмотрит его как 1-дневный. – chiliNUT

+0

, вы можете проверить это, выполнив команду 'stat' в вашей * nix-оболочке файла, затем скопируйте этот файл, запустите' stat' в новом файле и сравните время 'Change', которое регистрируется с помощью' filectime ' – chiliNUT

Смежные вопросы