2015-03-17 8 views
-2

У меня есть таблица базы данных (MySQL), которая хранит ссылку на файлы, которые можно загрузить, а также содержит последний раз, когда эти файлы были обновлены.Обновление информации о базе данных при обновлении файла в PHP

Я хочу, чтобы значения времени (метки времени) в таблице базы данных менялись всякий раз, когда я запускаю код для обновления файлов в FileManager в cPanel.

Как это сделать в php? Я пытался искать, но безрезультатно. Необходимо руководствоваться этим.

До сих пор я сделал, чтобы создать интерфейс, чтобы я мог вставлять файлы в базу данных с помощью SB Admin v2.0. Это поможет обновить значение timevalue. Однако мне не нужен интерфейс, потому что я буду запускать код для обновления файлов.

Итак, что я вижу, как получить последнее измененное время файла с помощью PHP?

+0

Какой код у вас есть на данный момент? – James

+0

Пока ничего. Нужна помощь, чтобы начать с этого. – lakesh

ответ

1

Если вы обновляете файловую систему через внешний скрипт (а не PHP), то вам нужно «слушать» файлы. Для этого используйте Cron Job для запуска этого (псевдо) кода.

$files = array(
    'file1.txt' => array('timestamp' => '12345678'), 
    'file2.txt' => array('timestamp' => '12346879'), 
); 

$target = '/uploads'; 
$weeds = array('.', '..'); 
$uploadedFiles = array_diff(scandir($target), $weeds); 

foreach ($uploadedFiles as $filename) { 
    if (isset($files[$filename])) { 
     if ($files[$filename]['timestamp'] < filemtime($filename)) { 
      $db->update('UPDATE files SET timestamp = :timestamp WHERE file_name = :filename'); 
      $db->params = array_merge($db->params, array(':filename' => $filename, ':timestamp' => $files[$filename]['timestamp'])); 
     } 
    } else { 
     $db->insert(getFileInfo($filename)); 
    } 
} 
0

Вы можете использовать https://github.com/crodas/WatchFiles. Пример кода, взятого из README.

require "vendor/autoload.php"; 

use WatchFiles\Watch; 

// we'd like to watch some files 
// and to save its state in foobar.php 
$foobar = new Watch("foobar.php"); 
if ($foobar->isWatching()) { 
    if (!$foobar->hasChanged()) { 
    // somebody else before us started watching files/dirs 
    // on foobar.php and *nothing* changed since last 
    // time 
    return; 
    } 
    // do heavy stuff here (Recompile it?) 
    // we need to tell the watch that we're aware of lastest 
    // changes and we'd like to update the file modification time 
    $foobar->rebuild(); 
    return; 
} 

// we'd love to see when a new file has been added or deleted 
$foobar->watchDir("foodir"); 
$foobar->watchDirs(array("foodir", 'foobar')); 

// or monitor changes inside file or files 
$foobar->watchFile("foodir.php"); 
$foobar->watchFiles(array("foodir.php", 'foobar.php')); 

// start watching! 
$foobar->watch(); 
Смежные вопросы