>  기사  >  백엔드 개발  >  PHP가 파일을 삭제하고 다시 빌드한 후 파일 생성 시간(filectime)이 변경되지 않는 문제를 해결하는 방법은 무엇입니까? ?

PHP가 파일을 삭제하고 다시 빌드한 후 파일 생성 시간(filectime)이 변경되지 않는 문제를 해결하는 방법은 무엇입니까? ?

WBOY
WBOY원래의
2016-10-10 11:39:081002검색
  1. php는 test.html이라는 파일을 생성하고 filectime을 사용하여 생성 시간 t1을 가져옵니다

  2. php는 test.html이라는 파일을 삭제합니다.

  3. php는 test.html이라는 파일을 다시 생성하고 filectime을 사용하여 생성 시간 t2를 가져옵니다

왜 t1 = t2인가요? ? 생성 시간이 업데이트되지 않는 이유는 무엇입니까? ? 파일 상태 캐시를 지우기 위해 Clearstatcache 기능을 사용했는데 작동하지 않습니다. 이 문제를 해결하는 방법은 무엇입니까? ? (캐시파일 재생성 여부 판단시 캐시파일 생성시간을 아는 것이 중요하므로 해결 부탁드립니다~)
이러한 상황에서 발생하는 문제에 대한 코드는 다음과 같습니다(조금 촘촘합니다) , 조금만 기다려주세요) (시아하):

<code>     // 页面缓存
     if ((defined('DEBUG_MODE') && !DEBUG_MODE) && (defined('CACHE_CONTROL') && CACHE_CONTROL)) {
         $opr = $GLOBALS['module'] . '/' . $GLOBALS['platform'] . '/' . $GLOBALS['controller'] . '/' . $GLOBALS['act'];
         $cache_name = md5($opr) . TEMPLATE_SUFFIX;
         $cache_file = APP_DIR . '/' . $GLOBALS['module'] . '/' . $GLOBALS['platform'] . '/Cache/' . $cache_name;
         // 清除文件状态缓存(就我使用的情况来看,压根没毛用...,这什么情况??)
         clearstatcache();
         // 缓存文件不存在 创建
         if (!$GLOBALS['FOpr']->checkFile($cache_file)) {
            require_once $view_file;
            $GLOBALS['FOpr']->cFile($cache_file);
            $GLOBALS['FOpr']->wData($cache_file , ob_get_contents());
         } else {
            // 超时重新缓存
            if (time() > filectime($cache_file) + CACHE_LIFE_TIME) {
                require_once $view_file;
                // 缓存文件超时时,先删除原缓存文件
                $GLOBALS['FOpr']->dFile($cache_file);
                // 新建同名缓存文件
                //(新建文件时,filectime 获取文件创建时间一直没更新!这个怎么破??
                // 这导致我没法重新生成缓存文件了!)
                $GLOBALS['FOpr']->cFile($cache_file); 
                // 写入缓存
                $GLOBALS['FOpr']->wData($cache_file , ob_get_contents() , 'w');
            } else {
                // 加载缓存文件
                require_once $cache_file;
            }
         }
     } else {
         // 显示动态文件(非缓存)
         require_once $view_file;
     }</code>
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.