更正确的咨询图像目录或数据库来计算有多少?

时间:2014-05-23 21:36:22

标签: php mysql

我试图动态地将图像插入横幅,现在正常工作。如果没有验证错误,我上传我的图像并插入图像的数据库名称。

但是我想问你一个我想到的问题,而我却找不到答案。

要插入图像,我想检查图像是否已经存在,以及是否有超过5张图像,5张图像,因为我只想在横幅上最多拍摄5张图像。

我这样做,在保存图像时咨询我的目录文件夹,而不是咨询数据库。

您对性能的看法如何?还是一样吗?你看到像我这样的优势吗?

继承我的代码示例:

extAlllowed = array('image/jpeg','image/pjpeg','image/png','image/gif');
$myDirectory = ../banner-images/;                   
if(in_array($img['type'][$i],$extAlllowed))
{
    $fi = new FilesystemIterator($myDirectory, FilesystemIterator::SKIP_DOTS);
    echo iterator_count($fi);

    if(file_exists($myDirectory.$image))
      {
        echo'Image selected already exist';
      }

    else if(iterator_count($fi)>=5)
      {
        echo'You can have only 5 images at time in banner.';
      }
    else
      {
        uploadImage($img['tmp_name'][$i],$image,'2000',$myDirectory);
        $inseretBanner = $pdo->prepare("INSERT INTO banners (img) VALUES (:img)");  
        $inseretBanner->bindValue(':img', $image);
        $inseretBanner->execute();
        echo'Image inserted with sucess';
      }                                             
}

1 个答案:

答案 0 :(得分:0)

考虑到拥有多个图像文件,在数据库中维护一个包含当前图像数量的计数器会更快。 FilesystemIterator将在内部运行所有文件来计算它们,这可能导致性能不佳。在大多数情况下,对数据库的简单查询(例如:SELECT image_amount FROM users WHERE id = [您当前的用户])会更快。

如果这样做,每次在数据库中插入/删除图像时都必须更新计数器。

希望有所帮助。