这是我在寻找解决方案时使用的代码。
public function indexAction()
{
//id3 options
$options = array("version" => 3.0, "encoding" => Zend_Media_Id3_Encoding::ISO88591, "compat" => true);
//path to collection
$path = APPLICATION_PATH . '/../public/Media/Music/';//Currently Approx 2000 files
//inner iterator
$dir = new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::SKIP_DOTS);
//iterator
$iterator = new RecursiveIteratorIterator($dir, RecursiveIteratorIterator::SELF_FIRST);
foreach ($iterator as $file) {
if (!$file->isDir() && $file->getExtension() === 'mp3') {
//real path to mp3 file
$filePath = $file->getRealPath();
Zend_Debug::dump($filePath);//current results: accepted path no errors
$id3 = new Zend_Media_Id3v2($filePath, $options);
foreach ($id3->getFramesByIdentifier("T*") as $frame) {
$data[$frame->identifier] = $frame->text;
}
Zend_Debug::dump($data);//currently can scan the whole collection without timing out, but APIC data not being processed.
}
}
}
问题:处理多个目录中的 mp3 文件的文件系统。将 id3 标签数据提取到数据库(3 个表),并将封面图像从标签中提取到单独的文件中。
我可以处理实际的提取和数据处理。我的问题是输出。
使用 Zend Framework 1.x 处理输出缓冲的方式,输出文件正在处理的指示器是很困难的。在旧式 PHP 脚本中,没有输出缓冲,您可以在循环的每次迭代中打印出一些 html,并获得一些进度指示。
我希望能够处理每张专辑的目录,输出结果,然后继续到下一张专辑的目录。只需要用户干预某些错误。
任何帮助,将不胜感激。
Javascript 不是我正在寻找的解决方案。我觉得这在 PHP 和 ZF 1 MVC 的构造中应该是可能的。
我这样做主要是为了自己的启蒙,这似乎是学习一些重要概念的好方法。
[编辑]
好的,关于如何将其分解成更小的块的一些想法怎么样。处理一个块,提交,处理下一个块,诸如此类。进出采埃孚。
[编辑]
我开始看到我正在努力完成的问题。似乎输出缓冲不仅仅发生在 ZF 中,它无处不在,从 ZF 一直到浏览器。嗯……