Storage 搜索函数

上午开发机器挂了,导致没办法写代码调BUG了,闲来无事就写了一个SAE storage的搜索函数方法,效率比较低下。因为需要遍历出所有的文件,然后从文件中匹配出最后的结果。但是对于有特殊需求的人应该还是有用的,分享下:

 <?php
/*
* @author lazypeople
* @function for SAE storage search
*/

function StorageSearch($domain,$keyword)
{
      $stor = new SaeStorage();
          $startprefix = '/';
          $keyword = $keyword;
          $num = 0;
          $hitsnum = 0;
      while ( $ret = $stor->getList($domain, $startprefix, 100, $num ) ) {
      foreach($ret as $file) {
                 if(preg_match("/".$keyword."/",$file))
                 {
                     $data['file'][] = $file;
                         $hitsnum++;
             }           
         $num ++;
      }    
      }
          $data['hitsnum'] = $hitsnum;
          $data['num'] = $num;
          return $data;
}
$domain = 'face';
$keyword = 'jpg';
$result = StorageSearch($domain,$keyword);
var_dump($result);
?>

后来在论坛中讨论的结果是这个函数还是极度的不靠谱,因为storage的查询接口走的是HTTP接口,加上文件遍历肯定会大大地影响效率,试想文件的数目非常庞大,那么搜索出指定文件名的文件可能就需要耗费很长的时间,所以对于有需求的人建议还是讲文件名和对应的文件的url映射关系存取到mysql或者KVDB中,这样可以在数据库通过建立索引加速文件的搜索速度。