exif_read_data 与 exec(exiftool...)

phe*_*atd 1 php exec exiftool

我有以下问题:

我在一个新继承的项目中从事维护工作。在这个项目中,开发人员通过以下方式处理图像和视频的元数据:

function getRotationFromFile($realPath) {
    $retVal = Array();

    $cmd = variable_get("exiftool",null) . "\"$realPath\"" . " | grep -E 'Rotation|Camera Identifier'";
    exec($cmd, $output);

    foreach ($output as $row){
        $key = trim(strstr($row, ':', true));
        $value = trim(str_replace(": ", "", strstr($row, ': ')));
        $retVal[$key] = $value;
    }
    return $retVal;
}
Run Code Online (Sandbox Code Playgroud)

正如您所读到的,这个函数调用exec(exiftool..)并检索一些元数据。我知道在 php 中存在exif_read_data,它做了同样的事情。

我的问题是:

  1. 最好的解决方案是什么?
  2. 谁更快?
  3. 谁是更“正确”的人?
  4. 最后,我尝试搜索,但没有找到exif_read_data是否在源代码中使用exiftool

先感谢您!

小智 5

我创建了一个 PHP 脚本,允许通过 exiftool 非常快速地读取/写入。我们将它与 gearman 一起使用,因此它作为后台服务运行,exiftool 最慢的部分是启动它,然后通过将作业传递给 gearman 从 PHP 脚本中调用它。我们运行该脚本的大约 5 个实例,因此它可以快速提供服务。单个进程应该能够在大约 1-2 秒内处理大约 100 个文件,这当然取决于文件大小和存储速度,但它确实可以很好地扩展。过去 5 个月,它已在我们的数字资产管理平台的生产中使用。

https://github.com/tsmgeek/ExifTool_PHP_Stayopen