首页 > 编程语言 >为PHP添加swoole异步并行扩展

为PHP添加swoole异步并行扩展

时间:2023-01-05 22:32:41浏览次数:60  
标签:serv 异步 php cli swoole function client PHP


​​为PHP添加swoole异步并行扩展​​


 

1. 确认安装环境



  • 仅支持Linux操作系统,核心代码兼容FreeBSD,需要调整某些编译的参数和细节才能通过
  • Linux内核版本2.3.32以上
  • PHP5.3.10以上版本
  • gcc4.4以上版本。核心代码兼容clang,需要关闭CPU亲和设置特性
  • cmake2.4+,编译为libswoole.so作为C/C++库时,需要使用cmake



 

2. 安装与配置

2. 1安装swoole:可pecl直接在线安装,或下载releases版本的swoole编译安装

 2.11 pecl安装swoole扩展

pecl不可用的请确认php安装目录的bin目录已加入系统变量

​​# pecl install swoole  ​​



 2.12编译安装swoole扩展

从此处下载:​​http://pecl.php.net/package/swoole​


​​# cd swoole​​           


​​# phpize​​


​​# ./configure​​


​​# make && make install​​



2.2配置php.ini

phpinfo()确认Configuration File (php.ini) Path

添加:


​​extension=swoole.so​​



重启Apache查看php扩展库


​​# service httpd restart​​           


​​# php -m​​



确认swoole已添加

官方文档:​​http://wiki.swoole.com/wiki/index/prid-1​

 

3.测试

server.php:

​​<?php​​           


​​$serv​​ ​​= ​​ ​​new​​ ​​swoole_server(​​ ​​"0.0.0.0"​​ ​​, 9501);​​


​​$serv​​ ​​->on(​​ ​​'connect'​​ ​​, ​​ ​​function​​ ​​(​​ ​​$serv​​ ​​, ​​ ​​$fd​​ ​​){​​


​​echo​​ ​​"Client:Connect.\n"​​ ​​;​​


​​});​​


​​$serv​​ ​​->on(​​ ​​'receive'​​ ​​, ​​ ​​function​​ ​​(​​ ​​$serv​​ ​​, ​​ ​​$fd​​ ​​, ​​ ​​$from_id​​ ​​, ​​ ​​$data​​ ​​) {​​


​​$serv​​ ​​->send(​​ ​​$fd​​ ​​, ​​ ​​'Swoole: '​​ ​​.​​ ​​$data​​ ​​);​​


​​});​​


​​$serv​​ ​​->on(​​ ​​'close'​​ ​​, ​​ ​​function​​ ​​(​​ ​​$serv​​ ​​, ​​ ​​$fd​​ ​​) {​​


​​echo​​ ​​"Client: Close.\n"​​ ​​;​​


​​});​​


​​$serv​​ ​​->start();​​


​​?>​​




client.php:


​​<?php​​           


​​$client​​ ​​= ​​ ​​new​​ ​​swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);​​


​​$client​​ ​​->on(​​ ​​"connect"​​ ​​, ​​ ​​function​​ ​​(​​ ​​$cli​​ ​​) {​​


​​$cli​​ ​​->send(​​ ​​"hello world\n"​​ ​​);​​


​​});​​


​​$client​​ ​​->on(​​ ​​"receive"​​ ​​, ​​ ​​function​​ ​​(​​ ​​$cli​​ ​​, ​​ ​​$data​​ ​​){​​


​​echo​​ ​​"Receive: $data\n"​​ ​​;​​


​​});​​


​​$client​​ ​​->on(​​ ​​"error"​​ ​​, ​​ ​​function​​ ​​(​​ ​​$cli​​ ​​){​​


​​echo​​ ​​"connect fail\n"​​ ​​;​​


​​});​​


​​$client​​ ​​->on(​​ ​​"close"​​ ​​, ​​ ​​function​​ ​​(​​ ​​$cli​​ ​​){​​


​​echo​​ ​​"close\n"​​ ​​;​​


​​});​​


​​$client​​ ​​->connect(​​ ​​'127.0.0.1'​​ ​​, 9501, 0.5);​​


​​?>​​



Test:

 测试Server:

   

为PHP添加swoole异步并行扩展_Server

    测试Client:

   

为PHP添加swoole异步并行扩展_php_02

 

 

End.

标签:serv,异步,php,cli,swoole,function,client,PHP
From: https://blog.51cto.com/kenkao/5991989

相关文章

  • PHP中include和require的区别详解
    PHP中include和require的区别详解1、概要性能与include()相类似,都是包括并运行指定文件。不同之处在于:对include()语句来说,在执行文件时每次都要进行读取和评估;而对于req......
  • C# to PHP base64 encode/decode
    ​​http://stackoverflow.com/questions/257462/c-sharp-to-php-base64-encode-decode​​We shouldprobablyURLEncodeyourBase64stringontheC#sidebeforeyou......
  • 在C#中获取如PHP函数time()一样的时间戳
    c#中没有象PHP一样的time()时间戳函数,但有DateTime.Now.Ticks用来计算时间差。此属性的值为自0001年1月1日午夜12:00以来所经过时间以100毫微秒为间隔表示时的数......
  • php+vscode+nginx+Xdebug 安装教程(vscode用debug的调试php)
    环境:window10+ phpstudy+vscode php全篇用php8.0.2,也可以用其他的版本,但要注意所有配置路径都要统一版本一、环境变量将你正在使用的php加入环境变量。因为phpstudy......
  • Unity(支持WebGL)+PHP(Workerman的Gateway)用Websocket协议实现匹配对战(摇骰子为例)1
    目录服务端PHP(Windows下演示)安装PHP启动服务器结束服务器客户端Unity(版本Unity2021.3.5f1)1.发布Windows客户端ws/wss(不发布小游戏,请忽略此点)演示工程地址扩展发布其他......
  • 基于libmemcached为php扩展memcached服务
    基于libmemcached,php扩展memcached的安装张映一,为什么要装memcached扩展memcached的1.2.4及以上增加了CAS(CheckandSet)协议,对于同一key的多进行程的并发处理问题。这......
  • php发送get、post请求的几种方法
    ​方法1:用file_get_contents以get方式获取内容 <?php$url='http://www.domain.com/';$html=file_get_contents($url);echo$html;?>  方法2:用fopen......
  • php&.net对称压缩解压缩探讨
    C#客户端访问PHPSOAPWebService,当传输大量文本数据时,可以通过压缩减少网络传输。C#在System.IO.Compression命名空间下提供了两个类GZipStream类和DeflateStream类来进行......
  • 简单的C#&PHP对称加解密
    byte[]ctxbytes=System.Text.Encoding.UTF8.GetBytes(ctx);byte[]keybytes=System.Text.Encoding.UTF8.GetBytes(key);intctxLen=ctxbytes.Length......
  • as3与php交互实现总结
     目前flash在各方个面的应用越来越广,而flash也不单只是注重自身绚丽的效果,也需要和外界程序交换数据,以实现更强大的功能,随着as3的到来,flash和外部交互的方式也越来越简便......