Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan pengaturcaraan tak segerak di bahagian bawah PHP

Bagaimana untuk melaksanakan pengaturcaraan tak segerak di bahagian bawah PHP

WBOY
WBOYasal
2023-11-08 20:05:081079semak imbas

Bagaimana untuk melaksanakan pengaturcaraan tak segerak di bahagian bawah PHP

Cara melaksanakan pengaturcaraan tak segerak di bahagian bawah PHP memerlukan contoh kod khusus

Dalam model pengaturcaraan tradisional, PHP ialah bahasa pengaturcaraan segerak berasaskan benang, iaitu setiap permintaan akan diproses secara berurutan di bahagian pelayan sehingga satu Selepas pemprosesan permintaan selesai, permintaan seterusnya akan diproses. Walau bagaimanapun, dengan peningkatan kerumitan aplikasi Internet dan peningkatan dalam akses, model penyegerakan ini tidak lagi dapat memenuhi keperluan untuk konkurensi tinggi dan kependaman rendah.

Untuk menyelesaikan masalah ini, PHP mula memperkenalkan model pengaturcaraan tak segerak, membolehkan pelayan mengendalikan berbilang permintaan pada masa yang sama dan meningkatkan prestasi sistem. Berikut akan memperkenalkan cara untuk melaksanakan pengaturcaraan tak segerak asas PHP dan menyediakan beberapa contoh kod khusus.

1. Gunakan perpustakaan sambungan acara

event ialah perpustakaan sambungan PHP yang menyediakan sokongan untuk pengaturcaraan dipacu acara dan boleh melaksanakan pengaturcaraan tak segerak dalam PHP. Mula-mula, anda perlu memasang pustaka sambungan acara, yang boleh dipasang melalui PECL atau kod sumber.

Selepas pemasangan berjaya, anda boleh menggunakan contoh kod berikut untuk mengalami penggunaan pustaka sambungan acara:

<?php
$base = new EventBase();
$event = new Event($base, -1, Event::TIMEOUT, function ($fd, $flag, $arg) {
    echo "timeout
";
});
$event->addTimer(3);
$base->loop();

Dalam kod di atas, mula-mula buat objek EventBase untuk menyimpan keadaan gelung acara. Kemudian buat objek Acara, tentukan fungsi panggil balik acara dan jenis acara sebagai TIMEOUT. Kemudian tetapkan tamat masa acara kepada 3 saat melalui kaedah addTimer(). Akhirnya, gelung peristiwa dimulakan melalui kaedah gelung().

2. Gunakan perpustakaan sambungan swoole

swoole ialah rangka kerja komunikasi rangkaian tak segerak berprestasi tinggi Ia menyediakan satu set IO tak segerak, protokol rangkaian, berbilang proses, fungsi pelayan HTTP dan WebSocket. Perlu diingatkan bahawa perpustakaan sambungan swoole memerlukan penggunaan ciri coroutine PHP untuk melaksanakan pengaturcaraan tak segerak.

Pertama, anda perlu memasang perpustakaan sambungan swoole, yang boleh dipasang melalui PECL atau kod sumber.

Selepas pemasangan berjaya, anda boleh menggunakan contoh kod berikut untuk mengalami penggunaan pustaka sambungan swoole:

<?php
$server = new SwooleServer('0.0.0.0', 9501);
$server->on('Connect', function ($server, $fd) {
    echo "Client {$fd} connected.
";
});
$server->on('Receive', function ($server, $fd, $from_id, $data) {
    $server->send($fd, "Server received: " . $data);
});
$server->on('Close', function ($server, $fd) {
    echo "Client {$fd} closed.
";
});
$server->start();

Dalam kod di atas, objek Pelayan pertama kali dibuat dan acara Sambung, Terima dan Tutup diikat melalui on () fungsi panggil balik. Kemudian mulakan pelayan melalui kaedah mula().

3. Gunakan pustaka ReactPHP

ReactPHP ialah rangka kerja I/O tanpa sekatan dipacu peristiwa yang menyediakan satu set komponen untuk menulis aplikasi tak segerak, berskala dan berprestasi tinggi. ReactPHP bukan perpustakaan sambungan, tetapi perpustakaan PHP tulen yang boleh dipasang melalui Komposer.

Anda boleh menggunakan contoh kod berikut untuk mengalami penggunaan perpustakaan ReactPHP:

<?php
$loop = ReactEventLoopFactory::create();
$loop->addPeriodicTimer(1, function () {
    echo "Hello, World!
";
});
$loop->run();

Dalam kod di atas, objek EventLoop pertama kali dicipta melalui kaedah Factory::create() untuk menyimpan keadaan gelung acara. Kemudian selang peristiwa ditetapkan kepada 1 saat melalui kaedah addPeriodicTimer() dan fungsi panggil balik acara ditentukan. Akhirnya, gelung acara dimulakan melalui kaedah run().

Ringkasan

Artikel ini memperkenalkan cara melaksanakan pengaturcaraan tak segerak di bahagian bawah PHP, dan menyediakan tiga perpustakaan dan rangka kerja sambungan yang biasa digunakan, acara, swoole dan ReactPHP. Pengaturcaraan tak segerak boleh meningkatkan prestasi dan keupayaan pemprosesan serentak program PHP, dan sesuai untuk senario aplikasi Internet dengan trafik yang besar dan serentak yang tinggi. Pembaca boleh berlatih melalui kod sampel untuk lebih memahami dan menguasai penggunaan pengaturcaraan tak segerak.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pengaturcaraan tak segerak di bahagian bawah PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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