Проверьте файлы в каталоге изменены

0

Мне нужно развернуть приложение PHP, написанное CodeIgniter, на клиентский веб-сервер (CentOS 5 или 6). Поскольку PHP является языком сценариев, ему не нужно компилировать двоичный код для развертывания. У него есть шансы, что клиент самостоятельно изменит программу PHP без уведомления. Если клиент изменил программу, которая сделала приложение не в порядке, нам нужно взять дополнительную силу человека, чтобы найти их модификацию и исправить.

Поэтому я хотел бы сделать что-то, что может легко дать мне знать, что любые файлы (php, css, html и т.д.) Приложения были изменены после моего развертывания. Есть ли какой-либо метод, предложенный кем-либо?

Спасибо,

Теги:
codeigniter
centos
checksum

1 ответ

0

Использовать filemtime()

int filemtime ( string $filename )

Эта функция PHP возвращает время, когда записывались блоки данных файла, то есть время, когда содержимое файла было изменено.

<?php
// outputs e.g.  somefile.txt was last modified: December 12 2014 09:16:23.

$filename = 'somefile.txt';
if (file_exists($filename)) {
    echo "$filename was last modified: " . date ("F d Y H:i:s.", filemtime($filename));
}
?>

Чтобы получить последнее время изменения каталога, вы можете использовать это:

<pre>
$getLastModDir = filemtime("/path/to/directory/.");
</pre>

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

Это пригодится, когда вам нужно только одно "последнее обновление" на главной странице вашего веб-сайта и по-прежнему учитывать все файлы вашего сайта.

Чтобы получить дату изменения какого-либо удаленного файла, вы можете использовать fine функцию с помощью блокнота в кодовом слайде com com (с улучшениями dma05 в веб-точке de и madsen в сети lillesvin dot net).

Но теперь вы можете добиться того же результата с помощью stream_get_meta_data (PHP> 4.3.0).

Однако может возникнуть проблема, если произойдет некоторая переадресация. В этом случае HTTP-ответ сервера не содержит заголовок Last-Modified, но есть заголовок Location, указывающий, где найти файл. Приведенная ниже функция выполняет любые перенаправления, даже множественные перенаправления, так что вы достигнете реального файла, для которого вы хотите получить последнюю дату изменения.

<?php

// get remote file last modification date (returns unix timestamp)
function GetRemoteLastModified( $uri )
{
    // default
    $unixtime = 0;

    $fp = fopen( $uri, "r" );
    if( !$fp ) {return;}

    $MetaData = stream_get_meta_data( $fp );

    foreach( $MetaData['wrapper_data'] as $response )
    {
        // case: redirection
        if( substr( strtolower($response), 0, 10 ) == 'location: ' )
        {
            $newUri = substr( $response, 10 );
            fclose( $fp );
            return GetRemoteLastModified( $newUri );
        }
        // case: last-modified
        elseif( substr( strtolower($response), 0, 15 ) == 'last-modified: ' )
        {
            $unixtime = strtotime( substr($response, 15) );
            break;
        }
    }
    fclose( $fp );
    return $unixtime;
}
?>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню