gpt4 book ai didi

mysql - 如何更新约 25,000 个音乐文件的数据库?

转载 作者:行者123 更新时间:2023-11-29 14:41:45 27 4
gpt4 key购买 nike

更新:

我编写了一个工作脚本,可以在合理的时间内完成这项工作,而且看起来相当可靠。它完全用 PHP 编码,并围绕 saccharine 建议的 array_diff() 思想构建(所以,谢谢 saccharine!)。

您可以在此处访问源代码:http://pastebin.com/ddeiiEET

我有一个 MySQL 数据库,它是某个目录中 mp3 文件及其属性(即标题/艺术家/专辑)的索引。

新文件经常被添加到音乐目录中。目前它包含大约 25,000 个 MP3 文件,但我需要创建一个每天左右执行一次的 cron 作业,添加在数据库中找不到的所有文件。

问题是我不知道最好/最省力的方法是什么。我假设必须在每个 cron 运行中对每个 文件运行MySQL 查询(以检查它是否已经索引),因此脚本将不可避免地需要一点时间while 运行(这没关系;这是一个自动化过程)。然而,正因为如此,我通常选择的语言(PHP)可能不够,因为它不是为运行这样的长时间运行的脚本而设计的(或者是......?)。

这显然很好,但我并不担心删除已删除文件的索引条目(如果文件实际上被删除,它总是手动清理,而且我不介意手动进入数据库来修复索引)。

顺便说一句,这将是递归的;这些文件大多位于 Artist/Album/Title.mp3 结构中,但是它们并不是像这样严格排序的,并且脚本肯定必须能够获取新文件的 ID3 标签。事实上,理想情况下,我希望脚本在每次运行时为每个文件获取 ID3 标记,并向数据库添加新行或更新现有行(如果已更改)。

不管怎样,我是从头开始的,所以我想首先是最基本的建议(比如使用哪种编程语言 - 如果有必要,我愿意学习一种新的语言)。非常感谢!

最佳答案

首先是一个愚蠢的问题,是否不能简单地按添加日期对文件进行排序,并且仅对最后一天添加的文件运行迭代?我不太熟悉如何处理文件,但看起来应该是可能的。

如果您只想提高当前代码的速度,我建议您检查数据是否已正确索引。如果您通过表的索引进行搜索,查询会更快。如果您正在搜索不是关键的列,您可能需要更改您的设置。您还应该避免使用“SELECT *”,而使用“SELECT COUNT”,因为 mysql 将返回整数而不是对象。

您还可以在几个 mysql 查询中完成所有操作,但这会增加 php 代码的复杂性。使用有关所有文件 $files 的信息调用数组。从数据库中选择数据,其中数据库中的文件与 $files 中的文件匹配。像这样的东西。

"SELECT id FROM MUSIC WHERE id IN ($files)"

读取返回的数组并将其标记为$db_files。然后使用 array_diff() 查找 $files 数组中未出现在 $db_files 数组中的所有文件。将丢失的文件标记为 $missing_files。然后将 $missing_files 中的文件插入数据库。

关于mysql - 如何更新约 25,000 个音乐文件的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7859045/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com