Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Panduan Pemula untuk PHP: Pengaturcaraan Asynchronous

Panduan Pemula untuk PHP: Pengaturcaraan Asynchronous

王林
王林asal
2023-05-20 09:51:051071semak imbas

Sebagai bahasa skrip yang popular, PHP sentiasa menjadi salah satu bahasa arus perdana untuk pembangunan web. Dalam pembangunan web, pengaturcaraan tak segerak semakin digunakan dalam senario berprestasi tinggi seperti perangkak web, sembang masa nyata dan tinjauan panjang. Artikel ini akan memperkenalkan pengetahuan berkaitan pengaturcaraan tak segerak PHP supaya pembaca dapat menguasai asas pengaturcaraan tak segerak dan meningkatkan prestasi aplikasi Web.

1. Pengenalan kepada pengaturcaraan tak segerak

Pengaturcaraan tak segerak bermakna apabila memanggil operasi I/O yang memakan masa, atur cara tidak perlu menunggu operasi selesai, tetapi melaksanakannya selepas operasi selesai Fungsi panggil balik yang sepadan. Berbanding dengan pengaturcaraan segerak, pengaturcaraan tak segerak mempunyai kelajuan tindak balas yang lebih baik dan keupayaan serentak, dan boleh menggunakan masa menunggu I/O dengan lebih baik.

2. Kaedah pelaksanaan pengaturcaraan tak segerak PHP

Terdapat dua kaedah pelaksanaan utama pengaturcaraan tak segerak PHP: berbilang proses dan dipacu peristiwa.

1. Berbilang proses

Pelaksanaan berbilang proses adalah untuk mencipta berbilang proses dalam program, dan setiap proses menjalankan tugas yang berasingan. Proses baharu boleh dibuat dalam sistem Unix/Linux melalui panggilan sistem fork(), dan pakej sambungan PCNTL menyediakan banyak perpustakaan fungsi untuk mengawal proses kanak-kanak, yang boleh merealisasikan penciptaan proses, penamatan, penyegerakan dan proses lain.

Walaupun pengaturcaraan pelbagai proses adalah mudah, terdapat juga banyak masalah, seperti komunikasi antara proses, proses keluar yang tidak normal dari proses kanak-kanak, dll. Di samping itu, pelbagai proses akan menggunakan banyak sumber sistem apabila mencipta sejumlah besar proses kanak-kanak, mengakibatkan beban sistem yang tinggi.

2. Didorong oleh peristiwa

Didorong oleh peristiwa ialah pelaksanaan arus perdana pengaturcaraan tak segerak dalam PHP. Dalam mod ini, program sentiasa mendengar acara dan hanya melaksanakan fungsi panggil balik yang sepadan apabila acara tersuai dicetuskan. Model dipacu peristiwa membenarkan berbilang sambungan untuk berkongsi satu urutan dan proses, menjadikan penggunaan sumber sistem dengan lebih baik.

Model dipacu peristiwa PHP yang biasa digunakan termasuk model Reaktor dan model coroutine. Model Reaktor ialah model pengaturcaraan tak segerak berdasarkan mekanisme gelung peristiwa. Dalam React, gelung peristiwa digunakan untuk meninjau peristiwa I/O Sebaik sahaja peristiwa dicetuskan, fungsi panggil balik yang sepadan akan dipanggil. Model coroutine mencapai tujuan pengaturcaraan tak segerak dengan mengawal kemasukan dan keluar fungsi melalui coroutine.

Pada masa ini, sambungan yang biasa digunakan dalam pengaturcaraan tak segerak PHP ialah:

  • Swoole: Swoole ialah rangka kerja komunikasi rangkaian berprestasi tinggi berdasarkan Gelung Acara dan Coroutine, yang boleh melaksanakan tak segerak dengan mudah Perkhidmatan TCP /UDP/WebSocket.
  • Workerman: Workerman ialah rangka kerja PHP tidak menyekat tak segerak sepenuhnya yang menyokong komunikasi WebSocket dan TCP/UDP.

3. Contoh pengaturcaraan tak segerak PHP

Yang berikut menggunakan contoh mudah untuk memperkenalkan penggunaan pengaturcaraan tak segerak PHP.

Dalam contoh ini, kami akan menggunakan sambungan Swoole untuk melaksanakan perkhidmatan TCP yang mudah. Selepas menghidupkan perkhidmatan TCP, pelanggan boleh menyambung ke pelayan melalui alat telnet dan menghantar mesej ke pelayan. Selepas menerima mesej, pelayan menghantar semula mesej kepada pelanggan.

Berikut ialah contoh kod yang berkaitan:

<?php
$server = new swoole_server('127.0.0.1', 9501, SWOOLE_PROCESS, SWOOLE_SOCK_TCP);
$server->set([
    'worker_num' => 4,
    'daemonize'  => false,
]);
$server->on('connect', function ($server, $fd) {
    echo "Client {$fd}: Connect.
";
});
$server->on('receive', function ($server, $fd, $from_id, $data) {
    $server->send($fd, 'Receive: ' . $data);
});
$server->on('close', function ($server, $fd) {
    echo "Client {$fd}: Close.
";
});
echo "Server Start.
";
$server->start();

Dalam kod di atas, kami mula-mula mencipta perkhidmatan Swoole melalui fungsi swoole_server baharu dan menyediakan 4 proses pekerja dengan alamat IP 127.0. 0.1 , nombor port ialah 9501. Seterusnya, kami mendaftarkan tiga fungsi panggil balik, masing-masing sepadan dengan sambungan pelanggan, penerimaan dan acara penutup. Apabila pelanggan menyambung, kami mencetak mesej Sambung apabila pelanggan menghantar data, kami menghantar semula data kepada pelanggan apabila pelanggan menutup sambungan, kami mencetak mesej Tutup. Akhir sekali, kami mengeluarkan mesej Mula Pelayan untuk memulakan perkhidmatan.

4. Ringkasan

Pengaturcaraan tak segerak ialah kemahiran penting dalam pembangunan web PHP, yang boleh meningkatkan prestasi dan keselarasan aplikasi web. Artikel ini memperkenalkan konsep dan pelaksanaan pengaturcaraan tak segerak PHP, dan memberikan contoh penggunaan yang mudah. Kami berharap pembaca dapat mengetahui tentang penggunaan pengaturcaraan tak segerak dan meningkatkan keupayaan pembangunan web mereka dengan mempelajari artikel ini.

Atas ialah kandungan terperinci Panduan Pemula untuk PHP: Pengaturcaraan Asynchronous. 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