gpt4 book ai didi

php - 在 Web 服务器上查找文件名中的最大数字

转载 作者:可可西里 更新时间:2023-11-01 13:19:18 25 4
gpt4 key购买 nike

在我的网络服务器上,我有一个包含编号图像文件的文件夹:

...
296.jpg
297.png
298.gif
...

数字是连续的(1, 2, 3, ...)。文件名仅包含数字(“12.jpg”,而不是“photo_12.jpg”)。文件可能不会按照文件名编号的顺序创建和存储(即 2000.jpg 可能早于 2.jpg)。

我想在文件名中找到最大的数字

我这样做:

$glob = glob("path/to/dir/*");
$highest = max(preg_replace("|[^0-9]|", "", $glob));
// $highest is now something like 381554

有没有资源占用少的方法?

最佳答案

首先你要决定你要保存什么样的资源,因为是内存,还是其他东西的IO操作,会有不同的做法。

到目前为止,您的解决方案在工作速度方面是最优化的,但它非常消耗内存,因为文件夹中可能有很多文件,您会达到内存限制。

我建议您在某处缓存最大值,例如在 Redis 中。然后每次上传新图像时更新它。要缓存它,您必须先获取它。您可以使用一个简单的脚本获得初始最大值:

$max = 0;
foreach (new DirectoryIterator('.') as $fileInfo) {
if ($fileInfo->isDot()) continue;

$current = pathinfo($fileInfo->getFilename())['filename'];
if (!is_numeric($current)) continue;
if ($current > $max) $max = $current;
}

或者调用外部sort命令作为vladyslav-savchenko建议。

然后你只需要保持更新的最大值。通过两者的 cron 在每次上传时更新它。

关于php - 在 Web 服务器上查找文件名中的最大数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27563137/

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