Pengaturcaraan dipacu acara dan fungsi berkaitan dalam PHP

WBOY
Lepaskan: 2023-06-22 19:52:01
asal
1301 orang telah melayarinya

Pengaturcaraan dipacu acara dan fungsi berkaitannya dalam PHP

Dengan pembangunan Internet dan Internet mudah alih, keperluan untuk aplikasi Web menjadi semakin pelbagai dan kompleks. Aplikasi PHP tradisional menggunakan model berasaskan respons permintaan, memfokuskan pada bertindak balas kepada setiap permintaan HTTP Walau bagaimanapun, model ini tidak mempunyai kefleksibelan dan sukar untuk mengendalikan beberapa senario perniagaan yang tinggi, kompleks dan masa nyata. Event Driven Programming (EDP) memainkan peranan penting dalam situasi ini. Artikel ini akan memperkenalkan pengaturcaraan dipacu peristiwa dalam PHP dan penggunaannya dengan fungsi yang berkaitan.

1. Apakah pengaturcaraan dipacu acara?

Pengaturcaraan dipacu peristiwa ialah paradigma pengaturcaraan ialah menjadikan acara sebagai pusat dan memisahkan pencetus dan pemprosesan acara. Dalam EDP, program aplikasi dibahagikan kepada dua bahagian, satu ialah penghantaran peristiwa, dan satu lagi ialah pemprosesan acara.

Secara umumnya, peristiwa mempunyai sumber peristiwa Apabila sumber peristiwa mengalami perubahan keadaan tertentu, peristiwa yang berkaitan akan dicetuskan dan pemerhati akan dimaklumkan untuk pemprosesan seterusnya. Pengaturcaraan dipacu acara biasanya menggunakan mod tak segerak, iaitu, ia tidak menyekat pelaksanaan kod semasa pemprosesan acara, tetapi meletakkan acara ke dalam baris gilir acara dan menunggu gelung acara memprosesnya.

Kelebihan pengaturcaraan dipacu peristiwa ialah penyahgandingan dan kebolehskalaannya. Dengan pengaturcaraan dipacu peristiwa, kami boleh menambah fungsi baharu dengan mudah tanpa mengubah suai kod sedia ada, yang menjadikan aplikasi lebih fleksibel.

2. Fungsi berkaitan pengaturcaraan dipacu peristiwa dalam PHP

Dalam PHP, terdapat beberapa perpustakaan sambungan yang menyediakan fungsi berkaitan pengaturcaraan dipacu peristiwa dan fungsi pemprosesan, termasuk Swoole, ReactPHP dan Amp, dsb. . Pustaka sambungan ini tersedia dalam versi PHP 7.

1. Swoole

Swoole ialah enjin komunikasi rangkaian PHP tak segerak dipacu peristiwa yang boleh digunakan untuk melaksanakan pelayan HTTP berprestasi tinggi, pelayan WebSocket, pelayan TCP/UDP tak segerak, dsb. Sambungan swoole menyediakan banyak fungsi yang berkaitan, seperti swoole_event_add(), swoole_event_write(), swoole_event_set(), swoole_timer_add(), dsb. Antaranya, fungsi swoole_event_add() boleh digunakan untuk meletakkan acara ke dalam gelung acara.

Berikut ialah contoh pelayan Swoole yang mudah:

on("start", function ($server) { echo "Swoole http server is started at http://127.0.0.1:9501 "; }); $server->on("request", function ($request, $response) { $response->header("Content-Type", "text/plain"); $response->end("Hello World "); }); $server->start();
Salin selepas log masuk

Dalam contoh ini, kami mencipta pelayan HTTP dan mengikatnya pada port TCP 9501 pada 127.0.0.1. Apabila permintaan HTTP dihantar ke pelayan, acara "permintaan" akan dicetuskan dan fungsi panggil balik akan dipanggil untuk pemprosesan yang sepadan.

2. ReactPHP

ReactPHP ialah perpustakaan PHP yang serupa dengan Node.js dan juga berdasarkan model pengaturcaraan dipacu peristiwa. Ia menyediakan I/O tak segerak kepada PHP, membolehkan aplikasi PHP bertindak balas kepada permintaan HTTP dan acara lain dalam cara yang didorong oleh peristiwa.

ReactPHP menyediakan banyak fungsi yang berkaitan, seperti ReactEventLoopLoopInterface, ReactPromisePromiseInterface, ReactFilesystemNode, dll. Fungsi ini boleh digunakan untuk melaksanakan pengaturcaraan dipacu peristiwa.

Berikut ialah contoh pelayan HTTP ReactPHP yang mudah:

on('request', function (PsrHttpMessageServerRequestInterface $request, ReactHttpResponse $response) { $response->writeHead(200, array('Content-Type' => 'text/plain')); $response->end("Hello World "); }); $loop->run();
Salin selepas log masuk

Dalam contoh ini, kami menggunakan kelas ReactHttpServer dan ReactSocketServer yang disediakan oleh ReactPHP untuk mencipta pelayan HTTP dan mendengar port TCP tempatan 8080 . Dengan memproses permintaan HTTP, kami boleh menggunakan fungsi $loop->run() untuk membuat pelayan mula mendengar.

3. Amp

Amp ialah rangka kerja I/O tak segerak dipacu peristiwa dan boleh digunakan untuk melaksanakan aplikasi web berprestasi tinggi. Ia terutamanya menyediakan fungsi seperti I/O tak segerak, Janji dan coroutine.

Berikut ialah contoh pelayan HTTP Amp yang mudah:

use AmpSocketServerSocket; use AmpHttpServerHttpServer; use AmpHttpStatus; use AmpHttpServerRequest; use AmpHttpServerResponse; use AmpLoop; $sockets = [ServerSocket::listen('127.0.0.1:1337')]; $server = new HttpServer($sockets, function (Request $request) { return new Response(Status::OK, ['content-type' => 'text/plain'], 'Hello, world!'); }); Loop::run(function () use ($server) { print "Server listening on http://localhost:1337 "; yield $server->start(); });
Salin selepas log masuk

Dalam contoh ini, kami menggunakan kelas AmpSocketServerSocket dan AmpHttpServerHttpServer untuk mencipta pelayan HTTP dan mendengar port TCP tempatan 1337. Pelayan HTTP ini juga dipacu peristiwa tak segerak Dengan memproses permintaan HTTP, kami boleh menggunakan fungsi AmpLoop::run() untuk membuat pelayan mula mendengar.

3. Ringkasan

Pengaturcaraan dipacu peristiwa ialah kaedah pembangunan yang sangat berguna yang boleh menjadikan aplikasi kami lebih cekap, fleksibel dan berskala dalam senario serentak tinggi dan masa nyata. Sebagai bahasa arus perdana untuk pembangunan web, PHP juga menyediakan beberapa fungsi berkaitan pengaturcaraan dipacu acara dan perpustakaan sambungan yang sangat berguna. Artikel ini memperkenalkan perpustakaan sambungan seperti Swoole, ReactPHP dan Amp dalam PHP dan memberikan contoh cara mereka melaksanakan pengaturcaraan dipacu peristiwa. Saya harap ia akan membantu pembaca memahami pengaturcaraan dipacu acara dalam PHP.

Atas ialah kandungan terperinci Pengaturcaraan dipacu acara dan fungsi berkaitan dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
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
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!