Jadual Kandungan
tempat menunggu
ReactPhp
Kesimpulan
FAQ Loop Event Php
Apakah peranan gelung acara dalam php?
Bagaimana perbezaan antara gelung acara dan pengaturcaraan PHP tradisional?
Bagaimana untuk melaksanakan gelung acara dalam aplikasi PHP saya?
Apakah faedah menggunakan gelung acara PHP?
Apakah kelemahan menggunakan gelung acara PHP?
Bolehkah saya menggunakan gelung acara dengan kerangka PHP seperti Laravel atau Symfony?
Bagaimana menangani kesilapan dalam gelung acara?
Bolehkah saya menggunakan gelung acara dalam skrip PHP CLI?
Bagaimana gelung acara berfungsi dengan koleksi sampah PHP?
Bolehkah saya menggunakan gelung acara dengan pelayan terbina dalam PHP?
Rumah pembangunan bahagian belakang tutorial php Pengenalan ke dalam gelung acara di PHP

Pengenalan ke dalam gelung acara di PHP

Feb 17, 2025 am 10:37 AM

PHP Event Loop: Senjata untuk Pengaturcaraan Asynchronous

mata teras

  • PHP Event Loop adalah struktur pengaturcaraan yang digunakan untuk menunggu peristiwa atau mesej dalam penjadual, terutama untuk mengendalikan operasi tak segerak.
  • Pengaturcaraan PHP tradisional adalah segerak, melakukan satu operasi pada satu masa, dan menunggu setiap operasi selesai sebelum meneruskan operasi seterusnya. Walaupun gelung acara membolehkan pengaturcaraan tak segerak, di mana operasi boleh dimulakan dan kemudian ditahan sehingga hasilnya siap, operasi lain boleh dilakukan pada masa ini.
  • perpustakaan seperti ReactPhp atau AMP menyediakan antara muka dan kelas yang diperlukan untuk membuat dan mengurus gelung acara PHP, yang membolehkan penggunaan sumber yang lebih baik dan masa tindak balas yang lebih pendek, terutamanya dalam aplikasi yang perlu mengendalikan sejumlah besar sambungan serentak.
  • Walaupun gelung acara dapat memberikan manfaat prestasi yang signifikan, mereka juga dapat meningkatkan kerumitan permohonan, memerlukan gaya pengaturcaraan yang berlainan, dan mungkin membuat kod lebih sukar untuk difahami dan debug. Tidak semua tugas sesuai untuk pemprosesan tak segerak, dan beberapa tugas mungkin lebih sukar untuk dilaksanakan dalam gelung acara.

pemaju php sentiasa menunggu sesuatu. Kadang -kadang kita menunggu permintaan untuk perkhidmatan jauh. Kadang -kadang kita menunggu pangkalan data untuk mengembalikan baris dari pertanyaan kompleks. Bukankah itu hebat jika kita dapat melakukan operasi lain dalam semua tempoh menunggu?

Jika anda telah menulis beberapa kod JS, anda mungkin sudah biasa dengan panggilan balik dan acara DOM. Walaupun kami juga mempunyai panggilan balik dalam PHP, mereka tidak berfungsi dengan cara yang sama. Ini adalah terima kasih kepada ciri yang dipanggil Event Loop.

An Introduction into Event Loops in PHP Kami akan memahami bagaimana gelung acara berfungsi dan cara menggunakan gelung acara di PHP.

Kami akan melihat beberapa perpustakaan PHP yang menarik. Sesetengah orang percaya bahawa perpustakaan ini tidak cukup stabil untuk digunakan dalam persekitaran pengeluaran. Sesetengah orang berfikir contoh yang disediakan di sini adalah "lebih baik dilaksanakan dalam bahasa yang lebih matang". Terdapat banyak sebab yang baik untuk mencuba kaedah ini. Terdapat juga sebab yang baik untuk mengelakkan kaedah ini dalam persekitaran pengeluaran. Tujuan artikel ini adalah untuk menyerlahkan kemungkinan dalam PHP.

tempat menunggu

Untuk memahami gelung acara, mari kita lihat bagaimana mereka bekerja di penyemak imbas. Lihat contoh ini:

function fitToScreen(selector) {
    var element = document.querySelector(selector);

    var width = element.offsetWidth;
    var height = element.offsetHeight;

    var top = "-" + (height / 2) + "px";
    var left = "-" + (width / 2) + "px";

    var ratio = getRatio(width, height);

    setStyles(element, {
        "position": "absolute",
        "left": "50%",
        "top": "50%",
        "margin": top + " 0 0 " + left,
        "transform": "scale(" + ratio + ", " + ratio + ")"
    });
}

function getRatio(width, height) {
    return Math.min(
        document.body.offsetWidth / width,
        document.body.offsetHeight / height
    );
}

function setStyles(element, styles) {
    for (var key in styles) {
        if (element.style.hasOwnProperty(key)) {
            element.style[key] = styles[key];
        }
    }
}

fitToScreen(".welcome-screen");
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Kod ini tidak memerlukan perpustakaan tambahan. Ia berfungsi dalam mana -mana penyemak imbas yang menyokong penukaran zum CSS. Versi Chrome terkini sudah cukup. Hanya pastikan pemilih CSS sepadan dengan unsur -unsur dalam dokumen.

Fungsi ini menerima pemilih dan pusat CSS dan skala unsur -unsur yang sesuai dengan skrin. Apa yang berlaku jika kita membuang kesilapan dalam gelung untuk? Kami akan melihat sesuatu seperti ini ...

An Introduction into Event Loops in PHP

kami panggil stack stack senarai fungsi ini. Inilah bahagian dalam timbunan yang digunakan oleh penyemak imbas. Mereka akan memproses kod ini dalam langkah ...

An Introduction into Event Loops in PHP

Ini seperti bagaimana PHP menggunakan timbunan untuk menyimpan konteks. Pelayar melangkah lebih jauh dan menyediakan WebAPI untuk kandungan seperti acara DOM dan panggilan balik Ajax. Dalam keadaan semulajadi, JavaScript tidak segerak sebagai PHP. Iaitu: Walaupun kedua-duanya seolah-olah dapat melakukan banyak operasi pada masa yang sama, kedua-duanya adalah satu-satunya. Mereka hanya boleh melakukan satu perkara pada satu masa.

Menggunakan WebAPIS penyemak imbas seperti SetTimeout dan AddEventListener, kita boleh mengimbangi kerja selari dengan benang yang berbeza. Apabila peristiwa ini berlaku, penyemak imbas menambah panggilan balik ke giliran panggil balik. Apabila timbunan kosong pada masa akan datang, penyemak imbas mengambil panggilan balik dari giliran panggil balik dan melaksanakannya.

Proses ini membersihkan timbunan dan kemudian memanggil giliran kembali adalah gelung acara.

kehidupan tanpa gelung acara

di JS, kita boleh menjalankan kod berikut:

function fitToScreen(selector) {
    var element = document.querySelector(selector);

    var width = element.offsetWidth;
    var height = element.offsetHeight;

    var top = "-" + (height / 2) + "px";
    var left = "-" + (width / 2) + "px";

    var ratio = getRatio(width, height);

    setStyles(element, {
        "position": "absolute",
        "left": "50%",
        "top": "50%",
        "margin": top + " 0 0 " + left,
        "transform": "scale(" + ratio + ", " + ratio + ")"
    });
}

function getRatio(width, height) {
    return Math.min(
        document.body.offsetWidth / width,
        document.body.offsetHeight / height
    );
}

function setStyles(element, styles) {
    for (var key in styles) {
        if (element.style.hasOwnProperty(key)) {
            element.style[key] = styles[key];
        }
    }
}

fitToScreen(".welcome-screen");
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Apabila kita menjalankan kod ini, kita lihat di luar waktu tamat dalam konsol, dan kemudian di dalam waktu tamat. Fungsi SetTimeout adalah sebahagian daripada WebAPI yang disediakan oleh penyemak imbas. Selepas 1 milisaat telah berlalu, mereka menambah panggilan balik ke giliran panggil balik.

Console.log kedua dilakukan sebelum konsol.log dari dalam setTimeout bermula. Kami tidak mempunyai apa -apa seperti setTimeout dalam php standard, tetapi jika kita perlu mensimulasikannya:

setTimeout(function() {
    console.log("inside the timeout");
}, 1);

console.log("outside the timeout");
Salin selepas log masuk
Apabila kita menjalankannya, kita lihat di dalam waktu tamat, kemudian di luar waktu tamat. Ini kerana kita perlu menggunakan gelung tak terhingga dalam fungsi setTimeout untuk melaksanakan panggilan balik selepas kelewatan.

Ia boleh menggoda untuk bergerak semasa gelung di luar setTimeout dan memasukkan semua kod di dalamnya. Ini mungkin membuat kod kami berasa kurang disekat, tetapi pada satu ketika, kami akan sentiasa disekat oleh gelung itu. Pada satu ketika, kita akan melihat bahawa kita hanya boleh melakukan satu perkara dalam satu benang pada satu masa.

Walaupun tidak ada yang seperti setTimeout dalam PHP standard, terdapat cara yang tidak jelas untuk melaksanakan kod yang tidak menyekat selari dengan gelung acara. Kita boleh menggunakan fungsi seperti stream_select untuk membuat rangkaian iOS yang tidak menyekat. Kita boleh menggunakan sambungan C seperti EIO untuk membuat kod sistem fail yang tidak menyekat. Mari kita lihat perpustakaan yang dibina di atas kaedah yang tidak jelas ini ...

icicle

icicle adalah perpustakaan komponen yang mengambil kira gelung acara. Mari lihat contoh mudah:

function setTimeout(callable $callback, $delay) {
    $now = microtime(true);

    while (true) {
        if (microtime(true) - $now > $delay) {
            $callback();
            return;
        }
    }
}

setTimeout(function() {
    print "inside the timeout";
}, 1);

print "outside the timeout";
Salin selepas log masuk

Ini menggunakan versi icicleicio/icicle 0.8.0

pelaksanaan gelung acara icicle adalah hebat. Ia juga mempunyai banyak ciri yang mengagumkan; seperti janji, soket, dan pelaksanaan pelayan.

icicle juga menggunakan penjana sebagai coroutine. Penjana dan coroutine adalah topik yang berbeza, tetapi kod yang mereka benarkan cantik:

use Icicle\Loop;

Loop\timer(0.1, function() {
    print "inside timer";
});

print "outside timer";

Loop\run();
Salin selepas log masuk

Ini menggunakan versi ICILLEIO/DNS 0.5.0 Penjana untuk membuat kod asynchronous menulis yang serupa dengan kod segerak yang lebih mudah. Apabila digabungkan dengan janji dan gelung acara, mereka menghasilkan kod yang tidak menyekat yang sangat baik seperti ini!

ReactPhp

ReactPhp mempunyai pelaksanaan gelung acara yang sama, tetapi tanpa semua kandungan penjana yang menarik:

function fitToScreen(selector) {
    var element = document.querySelector(selector);

    var width = element.offsetWidth;
    var height = element.offsetHeight;

    var top = "-" + (height / 2) + "px";
    var left = "-" + (width / 2) + "px";

    var ratio = getRatio(width, height);

    setStyles(element, {
        "position": "absolute",
        "left": "50%",
        "top": "50%",
        "margin": top + " 0 0 " + left,
        "transform": "scale(" + ratio + ", " + ratio + ")"
    });
}

function getRatio(width, height) {
    return Math.min(
        document.body.offsetWidth / width,
        document.body.offsetHeight / height
    );
}

function setStyles(element, styles) {
    for (var key in styles) {
        if (element.style.hasOwnProperty(key)) {
            element.style[key] = styles[key];
        }
    }
}

fitToScreen(".welcome-screen");
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Ini menggunakan versi React/Event-loop 0.4.1

ReactPhp lebih matang daripada icicle dan mempunyai pelbagai komponen yang lebih luas. Icicle masih jauh untuk bersaing dengan semua ciri -ciri yang ditawarkan ReactPhp. Walau bagaimanapun, pemaju membuat kemajuan yang baik!

Kesimpulan

Sukar untuk menghilangkan minda tunggal yang kami diajar. Jika kita mempunyai akses kepada API yang tidak menyekat dan gelung acara, kita tidak tahu berapa banyak kod yang boleh kita tulis.

Komuniti PHP perlu memahami seni bina ini. Kita perlu belajar dan bereksperimen dengan pelaksanaan asynchronous dan selari. Kita perlu mencuri konsep dan amalan terbaik dari bahasa lain yang mempunyai gelung acara selama bertahun -tahun sehingga "bagaimana menggunakan sumber sistem yang paling berkesan?"

Tinggal untuk pelaksanaan yang lebih praktikal mengenai icicle yang akan datang!

FAQ Loop Event Php

Apakah peranan gelung acara dalam php?

Gelung acara dalam PHP adalah struktur pengaturcaraan yang digunakan untuk menunggu peristiwa atau mesej dalam penjadual. Ia berfungsi dengan menjejaki setiap peristiwa aktif sebagai tindak balas kepada rangsangan luar dan menjadualkannya apabila mereka selesai. Ini amat berguna dalam PHP untuk mengendalikan operasi tak segerak, di mana anda ingin memulakan operasi dan kemudian terus memproses tanpa menunggu operasi selesai.

Bagaimana perbezaan antara gelung acara dan pengaturcaraan PHP tradisional?

Pengaturcaraan PHP tradisional adalah segerak, yang bermaksud ia melakukan satu operasi pada satu masa, mengikut urutan yang ditulis, dan mesti menunggu setiap operasi selesai sebelum meneruskan operasi seterusnya. Sebaliknya, gelung acara membolehkan pengaturcaraan tak segerak. Ini bermakna tindakan itu boleh dimulakan dan kemudian ditahan sehingga hasilnya siap, di mana tindakan lain dapat dilakukan.

Bagaimana untuk melaksanakan gelung acara dalam aplikasi PHP saya?

Melaksanakan gelung acara dalam aplikasi PHP anda melibatkan penggunaan perpustakaan yang menyediakan fungsi ini, seperti ReactPhp atau amp. Perpustakaan ini menyediakan antara muka dan kelas yang diperlukan untuk membuat dan mengurus gelung acara. Anda kemudian boleh menggunakan gelung acara ini untuk mengendalikan tugas -tugas yang tidak segerak dalam permohonan anda.

Apakah faedah menggunakan gelung acara PHP?

Menggunakan gelung acara di PHP dapat meningkatkan prestasi aplikasi dan respons. Ia membolehkan anda memproses pelbagai tugas secara serentak, bukannya secara berurutan, yang boleh membawa kepada penggunaan sumber yang lebih baik dan masa tindak balas yang lebih pendek. Ini amat berfaedah dalam aplikasi yang memerlukan pengendalian sejumlah besar sambungan serentak, seperti pelayan sembang atau suapan data masa nyata.

Apakah kelemahan menggunakan gelung acara PHP?

Walaupun gelung acara dapat memberikan manfaat prestasi yang signifikan, mereka juga dapat meningkatkan kerumitan permohonan. Mereka memerlukan gaya pengaturcaraan yang berbeza dan boleh membuat kod lebih sukar difahami dan debug. Selain itu, tidak semua tugas sesuai untuk pemprosesan tak segerak, dan beberapa tugas mungkin lebih sukar untuk dilaksanakan dalam gelung acara.

Bolehkah saya menggunakan gelung acara dengan kerangka PHP seperti Laravel atau Symfony?

Ya, gelung acara boleh digunakan dengan kerangka PHP seperti Laravel atau Symfony, walaupun ini mungkin memerlukan beberapa konfigurasi tambahan. Kedua -dua kerangka ini direka untuk bekerja dengan kod PHP segerak, tetapi mereka boleh disesuaikan untuk bekerja dengan gelung acara untuk mengendalikan tugas -tugas yang tidak segerak.

Bagaimana menangani kesilapan dalam gelung acara?

Pengendalian ralat dalam gelung acara mungkin lebih rumit daripada pengendalian ralat dalam kod PHP yang disegerakkan. Oleh kerana tugas itu dilaksanakan secara tidak segerak, kesilapan itu tidak dapat ditangkap dengan segera. Sebaliknya, anda biasanya perlu menyediakan fungsi panggil balik yang akan dipanggil apabila ralat berlaku.

Bolehkah saya menggunakan gelung acara dalam skrip PHP CLI?

Ya, anda boleh menggunakan gelung acara dalam skrip PHP CLI (Command Line Interface). Malah, ini adalah kes penggunaan biasa untuk gelung acara, kerana skrip CLI sering memerlukan pelbagai tugas untuk dilaksanakan secara serentak.

Bagaimana gelung acara berfungsi dengan koleksi sampah PHP?

Koleksi sampah PHP berfungsi secara bebas dari gelung acara. Walau bagaimanapun, kerana gelung acara mengekalkan rujukan kepada semua tugas aktif, tugas -tugas ini hanya akan dibuang sampah selepas selesai. Ini bermakna anda perlu berhati -hati untuk mengelakkan kebocoran memori dalam kod gelung acara.

Bolehkah saya menggunakan gelung acara dengan pelayan terbina dalam PHP?

Ya, anda boleh menggunakan gelung acara dengan pelayan terbina dalam PHP. Walau bagaimanapun, ingat bahawa pelayan terbina dalam tidak direka untuk tujuan pengeluaran dan mungkin tidak memberikan tahap prestasi atau kebolehpercayaan yang sama sebagai pelayan web yang berdedikasi.

Atas ialah kandungan terperinci Pengenalan ke dalam gelung acara di PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

11 skrip pemendek URL terbaik PHP (percuma dan premium) 11 skrip pemendek URL terbaik PHP (percuma dan premium) Mar 03, 2025 am 10:49 AM

11 skrip pemendek URL terbaik PHP (percuma dan premium)

Pengenalan kepada API Instagram Pengenalan kepada API Instagram Mar 02, 2025 am 09:32 AM

Pengenalan kepada API Instagram

Bekerja dengan Data Sesi Flash di Laravel Bekerja dengan Data Sesi Flash di Laravel Mar 12, 2025 pm 05:08 PM

Bekerja dengan Data Sesi Flash di Laravel

Bina aplikasi React dengan hujung belakang Laravel: Bahagian 2, React Bina aplikasi React dengan hujung belakang Laravel: Bahagian 2, React Mar 04, 2025 am 09:33 AM

Bina aplikasi React dengan hujung belakang Laravel: Bahagian 2, React

Respons HTTP yang dipermudahkan dalam ujian Laravel Respons HTTP yang dipermudahkan dalam ujian Laravel Mar 12, 2025 pm 05:09 PM

Respons HTTP yang dipermudahkan dalam ujian Laravel

Curl dalam PHP: Cara Menggunakan Pelanjutan PHP Curl dalam API REST Curl dalam PHP: Cara Menggunakan Pelanjutan PHP Curl dalam API REST Mar 14, 2025 am 11:42 AM

Curl dalam PHP: Cara Menggunakan Pelanjutan PHP Curl dalam API REST

12 skrip sembang php terbaik di codecanyon 12 skrip sembang php terbaik di codecanyon Mar 13, 2025 pm 12:08 PM

12 skrip sembang php terbaik di codecanyon

Pengumuman Penyiasatan Situasi PHP 2025 Pengumuman Penyiasatan Situasi PHP 2025 Mar 03, 2025 pm 04:20 PM

Pengumuman Penyiasatan Situasi PHP 2025

See all articles