2014-12-12 5 views
0

CodeIgniter에서 작성한 PHP 응용 프로그램을 클라이언트의 웹 서버 (CentOS 5 또는 6)에 배포해야합니다. PHP는 스크립팅 언어이므로 배포를 위해 바이너리 코드로 컴파일 할 필요가 없습니다. 클라이언트가 나에게 예고없이 PHP 프로그램을 직접 수정할 수있는 기회가 있습니다. 클라이언트가 응용 프로그램을 고장난 프로그램을 수정 한 경우 수정을 찾아 수정해야합니다.디렉토리의 파일 검사가 수정되었습니다.

그래서 배포 후 응용 프로그램의 모든 파일 (php, css, html 등)이 수정되었음을 알리는 것을 쉽게 만들 수 있습니다. 누구든지 제안하는 방법이 있습니까? 파일의 내용이 때

, 즉, 시간을

답변

0

사용 filemtime()

int filemtime (string $filename) 

이 PHP 함수는 파일의 데이터 블록에 기록 된 시간을 반환합니다 감사합니다 변경되었습니다. 파일과 디렉토리를 참조하는 데 필요한 마지막 점에

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

를 적어 둡니다을하고 실제로 얻을 :

<?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)); 
} 
?> 

이 디렉토리의 최종 수정 시간을 얻으려면, 당신이 사용할 수 있습니다 최종 수정일.

웹 사이트의 전면 페이지에 '마지막 업데이트'메시지가 하나 뿐이며 여전히 웹 사이트의 모든 파일을 고려해야 할 때 유용합니다.

는 일부 원격 파일의 수정 날짜, 당신은 (점 순 lillesvin에서 웹 도트 드와 매드슨에서 dma05에 의해 개선) 닷컴 codewalker 에서 메모장으로 fine 기능을 사용할 수 있습니다 얻으려면.

stream_get_meta_data (PHP> 4.3.0)을 사용하면 더 쉽게 동일한 결과를 얻을 수 있습니다.

그러나 일부 리디렉션이 발생하면 문제가 발생할 수 있습니다. 이 경우 서버 HTTP 응답에는 Last-Modified 헤더이 포함되지 않지만 파일을 찾을 위치를 나타내는 위치 헤더가 있습니다. 아래 함수는 임의의 리다이렉션을 처리합니다. 심지어 여러 번 리디렉션을하므로 최종 수정 날짜를 원하는 실제 파일에 도달 할 수 있습니다.

<?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; 
} 
?>