使用php我需要将foto导入到我的页面,我需要从包含超过1000,2000或3000张照片的文件夹中导入它们。
如何确保我的浏览器因为大量文件而立即崩溃? 我将我网站上每页的数量限制为50,但我的PHP仍需要1000或更多的数据,然后按日期对其进行排序。
我已经尝试了glob()函数,但是在此页面中的文件数量太多之后,这不会起作用。
是否有更好的方法按日期对整个文件夹进行排序,然后采用有限的nr文件,如文件50到100或文件200到250等?
$files1 = glob('../fotos/*.JPG');
$files2 = glob('../fotos/*.jpg');
$files = array_merge($files1, $files2);
usort($files, function($b,$a){
return filemtime($a) - filemtime($b);
});
$filesPerPage = 50;
$page = $_GET['page']; //FOR INSTANCE: 1 OR 2 OR 5 ETC..
$filesMIN = ($page - 1) * $filesPerPage;
$filesMAX = $page * $filesPerPage;
$fileCount = 0;
foreach($files as $file) {
$fileCount++;
if($fileCount > $filesMIN && $fileCount <= $filesMAX) {
echo '<img src="$file" />';
}
}
所以,这是我的代码示例。现在当我在这个文件夹中使用超过1000个文件(类似的东西)时,我的浏览器会崩溃,或者加载时间会非常长。 我怎样才能改善这个?
答案 0 :(得分:0)
您可以尝试使用readdir()
代替glob()
,如下所示:
// loop through the directory and add all *.jpg && *.JPG files to an array
$filesPerPage = 50;
$page = intval($_GET['page']);
$filesMIN = ($page - 1) * $filesPerPage;
$filesMAX = $page * $filesPerPage;
// set the counter to the offset value
$fileCount = $filesMIN;
$files = array();
$dir = opendir("../photos");
while(false !== ($file = readdir($dir))) {
$ext = pathinfo($file, PATHINFO_EXTENSION);
if(($ext == 'jpg' || $ext == 'JPG') && $fileCount >= $filesMIN && $fileCount < $filesMAX) {
$fileCount++;
$files[] = $file;
}
}
closedir($dir);
// now sort the array
usort($files, function($b,$a){
return filemtime($a) - filemtime($b);
});
// and finally output each image
$output = '';
foreach($files as $file) {
$output .= '<img src="'.$file.'" />';
}
print $output;
请注意,上述代码中没有错误处理,当然您应该检查以便成功打开目录等等。