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();
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();
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(); });
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!