PHP符号链接一个巨大的文件列表

问题描述 投票:0回答:1

我有一个巨大的文件列表(超过48k文件的路径),我想为这些文件做一个符号链接

这是我的PHP代码:

$files=explode("\n","files.txt");
foreach($files as $file){
$file=trim($file);
@symlink($file,"/home/".$file."@".rand(1,80000).".txt");
}

问题是这个过程需要1个多小时

我考虑先检查文件是否存在,然后做一个符号链接,所以我在php.net上做了一些研究,并且首先有一些像is_link()和readlink()这样的函数用于我想要的东西,但是评论带了我的注意:

有必要通知readlink只适用于真正的链接文件,如果此链接文件位于某个目录,您无法检测并读取其内容,则is_link()函数将始终返回false并且readlink()将显示警告你试着这样做吗?

所以我做了这个新代码:

$files=explode("\n","files.txt");
foreach($files as $file){
    $file=trim($file);
    if(!empty(readlink($file))){
        @symlink($file,"/home/".$file."@".rand(1,80000).".txt");
        }
}

现在的问题是:“没有符号链接文件!”

我怎么能防止这个问题?我应该使用多线程还是有其他选择

php symlink
1个回答
0
投票

显然,您运行的是基于Linux的操作系统,您的问题与文件系统有关。

在这种情况下,我建议创建bash脚本来读取file.txt并为所有这些创建符号链接。

良好的开端是:

所以你可以尝试这样的事情:

#!/斌/庆典 而读名字 做 #做你想要的名字 ln -s / full / path / to / the / file / $ name /path/to/symlink/shuf -i 1-80000 -n 1$name'.txt' 完成<file.txt

编辑: 一线解决方案:

而读名; do ln -s / full / path / to / the / file / $ name / path / to / symlink / shuf -i 1-80000 -n 1 $ name'.txt';完成<file.txt

注意:将“file.txt”替换为文件的完整路径。如果出现任何问题,请在少量文件上进行测试。

© www.soinside.com 2019 - 2024. All rights reserved.