Dengan pembangunan berterusan senario aplikasi Internet, keperluan orang ramai untuk aplikasi Web menjadi lebih tinggi dan lebih tinggi. Untuk meningkatkan prestasi dan kelajuan tindak balas aplikasi web, pengaturcaraan tak segerak telah menjadi bahagian yang amat diperlukan dalam pembangunan aplikasi web moden. PHP ialah bahasa pembangunan web yang digunakan secara meluas, dan ReactPHP ialah rangka kerja pengaturcaraan tak segerak berdasarkan PHP. Artikel ini akan memperkenalkan cara menggunakan PHP dan ReactPHP untuk melaksanakan pengaturcaraan tak segerak.
1. Apakah itu pengaturcaraan tak segerak?
Dalam pengaturcaraan, segerak dan tak segerak ialah dua kaedah pengaturcaraan yang biasa digunakan. Pengaturcaraan segerak bermaksud bahawa atur cara melaksanakan fungsi dalam urutan Jika fungsi dipanggil, pelaksanaan atur cara digantung sehingga nilai pulangan fungsi dikira. Ini bermakna program mesti menunggu operasi tertentu selesai sebelum ia boleh meneruskan ke langkah seterusnya. Sebagai contoh, apabila kami memanggil antara muka API untuk mendapatkan data, program akan berhenti melaksanakan dalam tempoh ini sehingga pemerolehan data selesai.
Pengaturcaraan tak segerak ialah kaedah pengaturcaraan yang berbeza. Ciri pengaturcaraan tak segerak ialah anda tidak perlu menunggu untuk menyelesaikan operasi tertentu sebelum anda boleh terus melaksanakan operasi program seterusnya. Apabila operasi tak segerak dilakukan dalam atur cara, atur cara akan mencipta tugas tak segerak dan menyerahkannya kepada baris gilir tugas tak segerak untuk dilaksanakan. Pada masa yang sama, program akan terus melakukan langkah seterusnya tanpa menunggu tugas tak segerak selesai.
2. Pengaturcaraan Asynchronous PHP dan ReactPHP
PHP ialah bahasa pembangunan web yang popular, dan keupayaan pengaturcaraan tak segeraknya pernah terhad disebabkan model pelaksanaan segeraknya. Apabila masa berlalu, permintaan komuniti PHP untuk ciri pengaturcaraan tak segerak menjadi lebih tinggi dan lebih tinggi, jadi pelbagai penyelesaian pengaturcaraan tak segerak muncul. Antaranya, ReactPHP ialah rangka kerja PHP yang boleh menyokong pengaturcaraan tak segerak dengan baik.
ReactPHP ialah rangka kerja PHP sumber terbuka, yang dicirikan oleh model pengaturcaraan tak segerak dipacu peristiwa tanpa sekatan. Ia berdasarkan perpustakaan ReactPHP dan menggunakan satu set perpustakaan dan komponen PHP yang cekap untuk menyokong pengaturcaraan tak segerak.
Inti rangka kerja ReactPHP ialah gelung peristiwa, yang menggelung untuk menyemak status setiap tugas tak segerak dan memanggil fungsi panggil balik apabila tugas tak segerak selesai. Dengan cara ini, rangka kerja ReactPHP boleh melaksanakan berbilang tugas tak segerak secara serentak dan bertindak balas serta-merta apabila tugasan selesai. Pada masa yang sama, rangka kerja ReactPHP menyokong banyak protokol dan komponen, seperti HTTP, WebSocket, DNS, Redis, AMQP, dll., yang boleh memenuhi keperluan pelbagai senario penggunaan.
Di bawah, kami akan menggunakan contoh mudah untuk menunjukkan cara melaksanakan pengaturcaraan tak segerak menggunakan PHP dan ReactPHP. Kami akan membuat pelayan HTTP yang menerima permintaan dan kemudian mengendalikan permintaan secara tidak segerak.
Pertama, kita perlu memasang rangka kerja ReactPHP. Untuk memasang menggunakan Composer, hanya masukkan arahan berikut dalam terminal:
composer require react/http:^1.0
Selepas pemasangan selesai, kita boleh mula menulis kod. Berikut ialah contoh pengaturcaraan tak segerak menggunakan ReactPHP:
require 'vendor/autoload.php'; use ReactHttpResponse; use ReactHttpServer; use PsrHttpMessageRequestInterface; $loop = ReactEventLoopFactory::create(); $server = new Server(function (RequestInterface $request) use ($loop) { return new Response( 200, array('Content-Type' => 'text/plain'), 'Hello World' ); }); $socket = new ReactSocketServer('0.0.0.0:8080', $loop); $server->listen($socket); $loop->run();
Dalam contoh ini, kami mencipta pelayan HTTP yang akan mengembalikan rentetan "Hello World" dalam ingatan selepas menerima permintaan. Dalam proses memproses permintaan, kami menggunakan model tak segerak dan melaksanakannya menggunakan antara muka Pelayan dan Soket ReactPHP.
Pertama, kami mengimport dua kelas yang digunakan dalam perpustakaan ReactPHP melalui kata kunci penggunaan: Respons dan Server. Kelas Respons digunakan untuk mencipta objek respons HTTP, manakala kelas Pelayan digunakan untuk mencipta objek pelayan HTTP. Seterusnya, kami mencipta objek EventLoop menggunakan corak kilang ReactPHP. Objek ini digunakan untuk melaksanakan gelung peristiwa dalam pengaturcaraan tak segerak Ia menggelung melalui baris gilir tugas dan membuat panggilan balik untuk tugasan yang telah selesai.
Apabila mencipta objek Pelayan, kami lulus fungsi tanpa nama. Fungsi ini menerima objek Permintaan dan mengembalikan objek Respons. Fungsi ini menggunakan corak fungsi tak segerak, jadi ia tidak menyekat pelaksanaan program.
Seterusnya, kami mencipta objek Soket dan mengikatnya pada pelayan HTTP. Dengan cara ini, pelayan HTTP boleh memantau permintaan rangkaian.
Akhir sekali, panggil kaedah run() pada objek EventLoop untuk memulakan pengaturcaraan tak segerak. Kaedah ini akan melingkar melalui baris gilir tugas dan menyemak sama ada tugasan yang telah selesai memerlukan panggilan balik. Apabila tugasan selesai, objek EventLoop akan memanggil fungsi panggil balik yang berkaitan, dan logik selepas tugasan selesai diproses dalam fungsi panggil balik.
3. Kesimpulan
Pengaturcaraan tak segerak telah menjadi bahagian yang amat diperlukan dalam pembangunan aplikasi web moden. Menggunakan PHP dan ReactPHP untuk melaksanakan pengaturcaraan tak segerak, kami boleh meningkatkan prestasi dan kelajuan tindak balas aplikasi web dengan banyak, sekali gus meningkatkan pengalaman pengguna. Oleh itu, kita harus belajar secara aktif dan menggunakan teknologi pengaturcaraan tak segerak untuk memenuhi keperluan senario yang berbeza.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pengaturcaraan tak segerak menggunakan PHP dan ReactPHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!