Bagaimana cara membuat fungsi async di PHP?

Pada artikel ini, kita akan belajar tentang fungsi async di PHP.

Mari kita pahami apa arti dari Async (Asynchronous):

Suatu program tidak perlu dieksekusi baris demi baris. Program memanggil fungsi dan bergerak lebih jauh (tidak menunggu fungsi kembali). Itu akan dieksekusi di latar belakang. Non-Blocking metode dieksekusi secara asinkron. Async memungkinkan paralel eksekusi kode. Async juga digunakan untuk membuat eksekusi kode lebih cepat dan memungkinkan eksekusi banyak tugas.

Fungsi Async di PHP:

  • Di dalam sinkronis pemrograman, jika kita ingin membaca beberapa file dan mengembalikan kontennya, blok fungsi lainnya hingga fungsi saat ini kembali.
  • Tapi sebuah asinkron program pemrograman memanggil fungsi dan bergerak lebih jauh dan semua hal yang sama terjadi di latar belakang.
  • Untuk menulis program Async di PHP, kita membutuhkan library (ReactPHP dan Amp) yang digunakan untuk mengimplementasikan non-blocking I/O di php.
  • AMP adalah kerangka kerja konkurensi untuk php dan memungkinkan kita mengelola loop peristiwa, iterator asinkron, dan janji.

Sebelum masuk ke kodenya, mari kita pahami dulu fungsi-fungsi yang disediakan oleh AMP:

1. lalu() Fungsi: Fungsi then() dijalankan hanya ketika blok kode di Async berhasil dijalankan dan kita dapat melakukan operasi pada hasil yang dikembalikan oleh Async.

Sintaksis:

then(function () {
    // You can write operations here..
})

2. batas waktu() Fungsi: Fungsi timeout() terjadi ketika permintaan php memakan waktu lebih lama dari biasanya dan tidak memerlukan parameter.

Sintaksis:

timeout(function () {
    // Execute when request takes longer time to execute.
})

3. tangkap Blok: Pengecualian ditangani dalam tangkapan. Ketika program melempar blok penangkap pengecualian (kesalahan) akan dieksekusi.

Sintaksis:

catch(function ($exception) {
    // Here we can handle exceptions 
})

4. menunggu() Fungsi: Fungsi await memungkinkan kita menunggu hingga async kembali.

Sintaksis:

await($promise);

5. Janji: Janji mewakili hasil tunggal dari operasi asinkron.

$promise = $deferred->promise();

Langkah-langkah yang diperlukan untuk “Kode Async” diberikan di bawah ini:

Langkah 1: Anda harus menginstal komposer untuk mengimpor pustaka (ReactPHP dan Amp).

Langkah 2: Inisialisasi komposer menggunakan perintah berikut.

composer init

Langkah 3: Buat file .php. Struktur Proyek Anda akan terlihat seperti ini.

Langkah 4: Untuk mengimplementasikan fungsi Async kita perlu mengimpor paket terlebih dahulu dengan menggunakan composer.

composer require amphp/react-adapter

Langkah 5: Kelas impor ada di dalam AMP.

PHP

<?php

 

$loop = AmpReactAdapterReactAdapter::get();

 

?>

Catatan: Jika Anda mendapatkan error seperti ini “Uncaught Error: Class “AmpReactAdapterReactAdapter” not found in C:”. Sertakan ini di dalam kode PHP Anda: require __DIR__ . ‘/vendor/autoload.php’;

Mari kita ambil beberapa contoh untuk memahami konsep ini dengan lebih baik:

Contoh 1: Dalam pemrograman asinkron, program memanggil fungsi dan bergerak lebih jauh dan memungkinkan pelaksanaan banyak tugas. Sebagai contoh: Jika kita pertama kali menulis tabel 2 dan kemudian kita menulis beberapa fungsi cetak, maka fungsi cetak akan dijalankan terlebih dahulu karena I/O non-blocking.

PHP

<!DOCTYPE html>

<html lang="en">

 

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible"

        content="IE=edge">

    <meta name="viewport" content=

        "width=device-width, initial-scale=1.0">

</head>

 

<body>

    <h1 style="color: green;">

        GeeksforGeeks

    </h1>

 

    <?php

    require 'vendor/autoload.php';

    $loop = AmpReactAdapterReactAdapter::get();

 

    $loop ->addtimer(1, function(){

        foreach (range(1, 5) as $i) {

            $output = $i * 2;

            echo " ", $output . "<br>". " ";

        }

        echo " After Table". "<br>". " ";

    });

 

    echo " After Loop Time". "<br>". " ";

    $loop->run();

    ?>

</body>

 

</html>

Keluaran:

Contoh 2: Membaca file teks menggunakan Async. Kita dapat membaca file dengan cara asinkron non-blocking, di mana program memanggil fungsi dan pindah ke fungsi lain, tidak menunggu fungsi kembali. Ketika file tersebut benar-benar dibaca kemudian dicetak.

PHP

<!DOCTYPE html>

<html lang="en">

 

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible"

        content="IE=edge">

    <meta name="viewport" content=

        "width=device-width, initial-scale=1.0">

</head>

 

<body>

    <h1 style="color: green;">

        GeeksforGeeks

    </h1>

 

    <?php

     

    require 'vendor/autoload.php';

    $loop = AmpReactAdapterReactAdapter::get();

 

    $loop ->addtimer(1, function(){

        $file = fopen("amar.txt", "r");

            while(!feof($file)) {

                echo fgets($file). "<br>". " ";

            }

        echo " After Reading File ". "<br>". " ";

    });

 

    echo " After Loop Time". "<br>". " ";

    $loop->run();

    ?>

</body>

 

</html>

Keluaran:

Terakhir Diperbarui :
06 Oktober 2022

Seperti Artikel

Simpan Artikel