Rumah >pembangunan bahagian belakang >tutorial php >## Bagaimana Saya Boleh Mempercepatkan Pengambilan Imej daripada Halaman Web?

## Bagaimana Saya Boleh Mempercepatkan Pengambilan Imej daripada Halaman Web?

Susan Sarandon
Susan Sarandonasal
2024-10-27 16:17:291033semak imbas

##  How Can I Speed Up Image Retrieval from a Webpage?

Cara Mengambil Imej dengan Lebih Cepat daripada Halaman Web

Apabila memperoleh imej daripada URL yang diberikan, memenuhi kriteria tertentu boleh meningkatkan kecekapan proses . Artikel ini akan menumpukan pada mengekstrak imej dengan lebar dan ketinggian lebih besar daripada atau sama dengan 200 piksel, bertujuan untuk mempercepatkan proses berbanding kaedah lalai yang panjang.

Pencapaian Imej Lebih Pantas

Pendekatan tradisional melibatkan mengambil semula setiap imej secara berurutan daripada URL sumber dan menggunakan getimagesize() untuk mengesahkan dimensinya. Walau bagaimanapun, kaedah ini boleh menjadi perlahan dan banyak sumber. Untuk mengoptimumkan kelajuan, pertimbangkan penambahbaikan berikut:

1. Leverage Parallelism:

Gunakan fungsi curl_multi_init() untuk melancarkan berbilang permintaan HTTP serentak, mendapatkan semula imej secara selari. Pendekatan ini mengurangkan masa tindak balas dengan ketara dengan mengeksploitasi lebar jalur yang tersedia.

2. Simpan Imej Setempat:

Elakkan memanggil getimagesize() pada imej jauh. Sebaliknya, muat turun imej ke dalam direktori sementara tempatan dan tentukan dimensinya di sana. Langkah ini menghapuskan kelewatan yang dikaitkan dengan menghantar permintaan HTTP tambahan.

Pertimbangan Tambahan:

  • Kendalikan imej yang tidak mempunyai awalan "http" yang jelas dalam URLnya.
  • Sahkan kesahihan imej sebelum cuba menyimpannya.
  • Tetapkan direktori storan sementara untuk imej yang diambil.

Peningkatan Prestasi:

Dengan melaksanakan teknik di atas, pengambilan imej boleh dipercepatkan secara mendadak. Pertimbangkan contoh berikut:

<code class="php">// Start the timer
$start = microtime();

// Fetch images using curl_multi_init
$res = imageDownload($nodes, 200, 200);

// Stop the timer and display elapsed time
echo "<h1>", microtime() - $start, "</h1>";

function imageDownload($nodes, $maxHeight = 0, $maxWidth = 0) {

    // ... (curl_multi_init code here) ...

    // ... (curl_multi_exec code here) ...

    $res = array();
    // ... (image processing code here) ...

    return $res;
}</code>

Sampel Output:

Array
(
    [0] => temp/img8cdd64d686ee6b925e8706fa35968da4.gif
    [1] => temp/img5811155f8862cd0c3e2746881df9cd9f.gif
    [2] => temp/imga597bf04873859a69373804dc2e2c27e.jpg
    [3] => temp/img0914451e7e5a6f4c883ad7845569029e.jpg
    [4] => temp/imgb1c8c4fa88d0847c99c6f4aa17a0a457.jpg
    [5] => temp/img36e5da68a30df7934a26911f65230819.jpg
    [6] => temp/img068c1aa705296b38f2ec689e5b3172b9.png
    [7] => temp/imgfbeca2410b9a9fb5c08ef88dacd46895.png
)
0.076347

Pendekatan yang dipertingkatkan ini menghasilkan keuntungan prestasi yang ketara berbanding dengan pelaksanaan asal, mengurangkan masa pemprosesan sebanyak hampir 40 saat.

Atas ialah kandungan terperinci ## Bagaimana Saya Boleh Mempercepatkan Pengambilan Imej daripada Halaman Web?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn