这里的全新php新手....我一直在努力学习并编写了一个脚本来自在线的各种教程,扫描服务器上的文件夹。为找到的图像生成缩略图,然后根据需要将缩略图放入新创建的拇指文件夹中...然后在html页面中显示缩略图,缩略图链接回更大的图片。
在我的测试中,一切都运行良好,除非我用40多个图像实现它,我从脚本中得不到任何响应。只是一个没有正文的空白html页面......
正如我所说我是新手,但我认为它与服务器的超时有关?无法渲染图像或其他东西?我看到了一些关于服务器php.ini超时的事情,但我不确定这是不是问题。
我只需要弄清楚为什么我不能一次做40多张图片而且我会变成金色的!
<?php
# SETTINGS
$max_width = 300;
$max_height = 300;
function getPictureType($ext) {
if ( preg_match('/jpg|jpeg/i', $ext) ) {
return 'jpg';
} else if ( preg_match('/png/i', $ext) ) {
return 'png';
} else if ( preg_match('/gif/i', $ext) ) {
return 'gif';
} else {
return '';
}
}
function getPictures() {
global $max_width, $max_height;
if ( $handle = opendir(".") ) {
$lightbox = rand();
while ( ($file = readdir($handle)) !== false ) {
if ( !is_dir($file) ) {
$split = explode('.', $file);
$ext = $split[count($split) - 1];
if ( ($type = getPictureType($ext)) == '' ) {
continue;
}
if ( ! is_dir('thumbs') ) {
mkdir('thumbs');
}
if ( ! file_exists('thumbs/'.$file) ) {
if ( $type == 'jpg' ) {
$src = imagecreatefromjpeg($file);
} else if ( $type == 'png' ) {
$src = imagecreatefrompng($file);
} else if ( $type == 'gif' ) {
$src = imagecreatefromgif($file);
}
if ( ($oldW = imagesx($src)) < ($oldH = imagesy($src)) ) {
$newW = $oldW * ($max_width / $oldH);
$newH = $max_height;
} else {
$newW = $max_width;
$newH = $oldH * ($max_height / $oldW);
}
$new = imagecreatetruecolor($newW, $newH);
imagecopyresampled($new, $src, 0, 0, 0, 0, $newW, $newH, $oldW, $oldH);
if ( $type == 'jpg' ) {
imagejpeg($new, 'thumbs/'.$file);
} else if ( $type == 'png' ) {
imagepng($new, 'thumbs/'.$file);
} else if ( $type == 'gif' ) {
imagegif($new, 'thumbs/'.$file);
}
imagedestroy($new);
imagedestroy($src);
}
echo "<div class=\"box\">";
echo '<a href="'.$file.'" class="swipebox">';
echo '<img src="thumbs/'.$file.'" alt="" />';
echo '</a>';
echo '</div>';
}
}
}
}
?>
<---HTML CODE BELOW HERE-->
Using this to call function above in html code:
<?php getPictures(); ?>
答案 0 :(得分:0)
PHP的默认超时为30秒。你可能需要改变这个:
set_time_limit(0);
如果需要很长时间才能执行,这将阻止脚本超时。
此外,许多网络托管服务对您可能超出的页面允许使用的CPU和RAM有限制。为了解决这个问题,你可以将你的脚本分解成块并运行几次PHP文件,一次处理30个图像。