我需要在我的网站上显示多个帖子。这些职位由内部和外部职位组合而成。外部帖子会定期导入并使用cronjob保存在我的数据库中。
在显示帖子之前,我从所有HTML中提取文本。此外,我尝试找到帖子中包含的第一个图像,一直持续到找到高度和高度的图像。宽度符合我的要求。 (我只展示了一个小版本的文字,一张图片来自帖子作为预告片)
为了找到最合适的图片,我使用getimagesize,但不幸的是,这通常会创建几秒钟的PHP执行时间!
如何加快下面的功能?我非常渴望获得提示和良好的调整方法!!
提前致谢
//extract text without tags from blog post
$content = str_get_html("".$post_text."")->plaintext;
$max_width = 475;
$picture_id = 0;
//fetch images from blog post
foreach($html->find('img') as $e) {
//get picture attributes
list($width, $height, $type, $attr) = getimagesize((is_absolute_url($e->src) ? $e->src : $_SERVER['DOCUMENT_ROOT'].$e->src));
//adjust image width & height, so it's the size of the page
$new_width = $max_width;
$new_height = $new_width / $width * $height;
//find percentage of current width versus max width
$percentage = ($width / $max_width) * 100;
//select picture for display and resizing if the picture is large enough (we don't want to stretch it too much)
if($percentage >= 60) {
$e->width = $new_width;
$e->height = $new_height;
$picture = array('src' => $e->src, 'width' => $e->width, 'height' => $e->height);
//stop after first picture is found :: we only need one per post
if (++$picture_id == 1) break;
}
}
答案 0 :(得分:4)
原因:getimagesize
在远程文件上运行缓慢是一个众所周知的问题。
解决方案:建议您将文件存储在本地服务器上(暂时),然后对其进行getimagesize
。
答案 1 :(得分:2)
当您将url作为参数传递给getimagesize时,它会通过HTTP获取图像,这是一个缓慢的过程。
您应该首次获取其大小,并将其保存在数据库中以备将来使用。