1

ウェブサイトに複数の投稿を表示する必要があります。これらの投稿は、内部投稿と外部投稿を組み合わせたものです。外部投稿は定期的にインポートされ、cronジョブを使用してDBに保存されます。

投稿を表示する前に、すべてのHTMLからテキストを抽出します。さらに、投稿に含まれる最初の画像を見つけようとし、高さと幅が要件を満たす画像が見つかるまで続けます。(私はテキストの小さなバージョンと、ティーザーとしての投稿からの1枚の写真のみを表示します)

最適な画像を見つけるために、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;

    }

}
4

2 に答える 2

4

理由:これは非常によく知られている問題でありgetimagesize、リモートファイルでの動作が遅くなります。

解決策:ファイルをローカルサーバーに(一時的に)保存してから保存することをお勧めしますgetimagesize

于 2010-08-31T13:44:34.037 に答える
2

getimagesizeのパラメーターとしてURLを渡すと、HTTPを介して画像が取得されます。これは遅いプロセスです。

そのサイズは初めて取得し、将来のためにデータベースに保存する必要があります。

于 2010-08-31T13:54:03.160 に答える