【问题标题】:Does the symfony cache file system handle ext2 32000 files in the same directory limitation?symfony 缓存文件系统处理 ext2 32000 文件在同一个目录的限制吗?
【发布时间】:2011-02-10 23:20:57
【问题描述】:

symfony 缓存系统处理 ext2 32000 个文件在同一个目录的限制吗?

我有 80000 个用户,我想缓存他们的配置文件,但 symfony 缓存系统是否处理 ext2 限制?

我也在为将面临同样问题的其他人发帖。

【问题讨论】:

    标签: php caching symfony1 ext2


    【解决方案1】:

    我不能 100% 确定我的答案是否正确,但在 PROJECT/lib/symfony/cache/sfCacheFile.class.php 中有一种方法:sfCacheFile::getFilePath() 返回文件的路径。似乎没有任何针对ext2 文件系统限制的保护措施。

    但有一个非常简单的解决方案 - 覆盖该类:

    1. PROJECT/apps/APP/config/factories.yml中设置你自己的缓存类:

      default:
      # Others factories (if any)
      
        view_cache:
          class: myOwnFileCache
          param:
            automatic_cleaning_factor: 0
            cache_dir:                 %SF_TEMPLATE_CACHE_DIR%
            lifetime:                  86400
            prefix:                    %SF_APP_DIR%/template
      
    2. 现在创建该类并确保它扩展 sfFileCache 并覆盖 getFilePath()

      # PROJECT/lib/PROJECT/cache/myOwnFileCache.class.php        
      class myOwnFileCache extends sfFileCache {
          protected getFilePath($key) {
              /*
                  Convert from: abcdef
                            to: a/b/abcdef
              */
              $key = substr($key, 0, 1) . DIRECTORY_SEPARATOR . substr($key, 1, 1) . DIRECTORY_SEPARATOR . $key;
              return parent::getFilePath($key);
          }
      

      }

    3. 清除缓存:./symfony cc

    现在您需要 32000 个以完全相同两个字母/数字开头的缓存键来破坏您的文件系统。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-06
      • 2020-06-01
      • 2012-04-14
      • 2015-07-07
      • 2017-08-20
      • 2016-03-19
      • 2013-04-29
      • 2023-04-05
      相关资源
      最近更新 更多