php如何使用swoole
php如何使用swoole?
php Swoole的基本使用
项目中使用的PHP,但由于长耗时的任务,前端提交以后,需要服务端异步响应。
服务器异步有多种方案,包括MQ,fsocket,Swoole等。
Swoole 使用纯 C 语言编写,提供了 PHP 语言的异步多线程服务器,异步 TCP/UDP 网络客户端,异步 MySQL,异步 Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。
最重要的是,完美支持PHP语言。于是使用Swoole搭建了一个异步服务器,提供异步响应,推送,定时任务等一系列工作。
安装
Swoole是C语言编写,采用编译安装的方式。
安装依赖项有:
php-5.3.10 或更高版本
gcc-4.4 或更高版本
make autoconf
pcre (centos系统可以执行命令:yum install pcre-devel)
安装方式:
phpize #如果命令不存在 请在前面加上php的实际路径 ./configure make sudo make install
编译完成以后,需要在php.ini中添加扩展
extension=swoole.so
使用
服务端
class Server{ private $serv; public function __construct() { $this->serv = new swoole_server("0.0.0.0", 9501); $this->serv->set(array( //'worker_num' => 1, //一般设置为服务器CPU数的1-4倍 'daemonize' => 1, //以守护进程执行 'max_request' => 10000, 'task_worker_num' => 1, //task进程的数量 "task_ipc_mode " => 3 , //使用消息队列通信,并设置为争抢模式 'open_length_check' => true, 'dispatch_mode' => 1, 'package_length_type' => 'N', //这个很关键,定位包头的 'package_length_offset' => 0, //第N个字节是包长度的值 'package_body_offset' => 4, //第几个字节开始计算长度 'package_max_length' => 2000000, //协议最大长度 "log_file" => "/tmp/swoole_test.log" //日志 )); $this->serv->on('Receive', array($this, 'onReceive')); $this->serv->on('Task', array($this, 'onTask')); $this->serv->on('Finish', array($this, 'onFinish')); $this->serv->start(); } public function onReceive( swoole_server $serv, $fd, $from_id, $data ) { //放入任务队列,开始执行 $task_id = $serv->task( $data ); } public function onTask($serv,$task_id,$from_id, $data) { //做一些事情 }
客户端
class Client{ private $client, $ip, $port, $params; public function __construct($ip, $port, $params) { $this->ip = $ip; $this->port = $port; $this->params = $params; $this->client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC); $this->client->set(array( 'open_length_check' => true, 'package_length_type' => 'N', 'package_length_offset' => 0, //第N个字节是包长度的值 'package_body_offset' => 4, //第几个字节开始计算长度 'package_max_length' => 2000000, //协议最大长度 )); //设置事件回调函数 $this->client->on('Connect', array($this, 'onConnect')); $this->client->on('Receive', array($this, 'onReceive')); $this->client->on('Close', array($this, 'onClose')); $this->client->on('Error', array($this, 'onError')); //发起网络连接 $this->client->connect($ip, $port, 3); } public function onReceive( $cli, $data ) { echo "Received: " . $data . "\n"; } public function onConnect($cli) { $data = pack('N', strlen($data)) . $data; $cli->send($data); $cli->close(); } public function onClose( $cli) { echo "Connection close\n"; } public function onError() { echo "Connect failed\n"; } }
注意问题
'open_length_check' => true, 'package_length_type' => 'N', 'package_length_offset' => 0, //第N个字节是包长度的值 'package_body_offset' => 4, //第几个字节开始计算长度 'package_max_length' => 2000000, //协长度
这几个是定义帧定界的,因为Swoole的客户端和服务器端通信是TCP连接的,因此得给帧定界符,有多种帧定界方式,具体参考Swoole官方文档。这里其中是用头额外加长度的方式。
Atas ialah kandungan terperinci php如何使用swoole. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Menggunakan coroutine Swoole dalam Laravel boleh memproses sejumlah besar permintaan secara serentak. Kelebihannya termasuk: Pemprosesan serentak: membolehkan berbilang permintaan diproses pada masa yang sama. Prestasi tinggi: Berdasarkan mekanisme acara epoll Linux, ia memproses permintaan dengan cekap. Penggunaan sumber yang rendah: memerlukan lebih sedikit sumber pelayan. Mudah untuk disepadukan: Penyepaduan lancar dengan rangka kerja Laravel, mudah digunakan.

Cara menggunakan Swoole untuk melaksanakan pelayan proksi terbalik HTTP berprestasi tinggi Swoole ialah rangka kerja komunikasi rangkaian berprestasi tinggi, tak segerak dan serentak berdasarkan bahasa PHP. Ia menyediakan satu siri fungsi rangkaian dan boleh digunakan untuk melaksanakan pelayan HTTP, pelayan WebSocket, dsb. Dalam artikel ini, kami akan memperkenalkan cara menggunakan Swoole untuk melaksanakan pelayan proksi terbalik HTTP berprestasi tinggi dan memberikan contoh kod khusus. Konfigurasi persekitaran Pertama, kita perlu memasang sambungan Swoole pada pelayan

Swoole dan Workerman kedua-duanya adalah rangka kerja pelayan PHP berprestasi tinggi. Terkenal dengan pemprosesan tak segerak, prestasi cemerlang dan kebolehskalaannya, Swoole sesuai untuk projek yang perlu mengendalikan sejumlah besar permintaan serentak dan daya pemprosesan yang tinggi. Workerman menawarkan fleksibiliti mod tak segerak dan segerak, dengan API intuitif yang lebih sesuai untuk kemudahan penggunaan dan projek yang mengendalikan volum serentak yang lebih rendah.

Proses Swoole membolehkan pengguna beralih Langkah-langkah khusus ialah: membuat proses pengguna;

Perbandingan prestasi: Throughput: Swoole mempunyai throughput yang lebih tinggi berkat mekanisme coroutinenya. Latensi: Penukaran konteks coroutine Swoole mempunyai overhed yang lebih rendah dan kependaman yang lebih kecil. Penggunaan ingatan: Coroutine Swoole menduduki kurang memori. Kemudahan penggunaan: Swoole menyediakan API pengaturcaraan serentak yang lebih mudah digunakan.

Untuk memulakan semula perkhidmatan Swoole, ikut langkah berikut: Semak status perkhidmatan dan dapatkan PID. Gunakan "bunuh -15 PID" untuk menghentikan perkhidmatan. Mulakan semula perkhidmatan menggunakan arahan yang sama yang memulakan perkhidmatan.

Swoole in action: Cara menggunakan coroutine untuk pemprosesan tugas serentak Pengenalan Dalam pembangunan harian, kita sering menghadapi situasi di mana kita perlu mengendalikan berbilang tugas pada masa yang sama. Kaedah pemprosesan tradisional adalah menggunakan pelbagai benang atau pelbagai proses untuk mencapai pemprosesan serentak, tetapi kaedah ini mempunyai masalah tertentu dalam prestasi dan penggunaan sumber. Sebagai bahasa skrip, PHP biasanya tidak boleh terus menggunakan kaedah berbilang benang atau berbilang proses untuk mengendalikan tugas. Walau bagaimanapun, dengan bantuan perpustakaan coroutine Swoole, kami boleh menggunakan coroutine untuk mencapai pemprosesan tugas serentak berprestasi tinggi. Artikel ini akan memperkenalkan

Swoole ialah rangka kerja pembangunan rangkaian PHP berprestasi tinggi Dengan mekanisme tak segerak yang berkuasa dan ciri dipacu peristiwa, ia boleh membina aplikasi pelayan berkonkurensi tinggi dan berkemampuan tinggi. Walau bagaimanapun, apabila perniagaan terus berkembang dan jumlah konkurensi meningkat, penggunaan CPU pelayan mungkin menjadi halangan, menjejaskan prestasi dan kestabilan pelayan. Oleh itu, dalam artikel ini, kami akan memperkenalkan cara mengoptimumkan penggunaan CPU pelayan sambil meningkatkan prestasi dan kestabilan pelayan Swoole, dan menyediakan contoh kod pengoptimuman khusus. satu,
