今天我们来安装和测试一下php的多并发高性能网络通信扩展,这个扩展是使用C语音开发的,加载到PHP以后,在PHP的层面上实现了多并发异步通信,模拟了go语音的很多特性,极大的拓宽了PHP的应用场景。

直接使用官网上的那句命令就可以,安装swoole时可能会出现错误和卡住不动,多试几次就能成功。
pecl install swoole
要配置php的cli环境和fpm环境的ini文件,把扩展的so加载进去。

视频地址:

https://www.bilibili.com/video/av70354024/

httpServer.php

$http = new swoole_http_server("127.0.0.1", 9501);

$http->on("start", function ($server) {
echo "Swoole http server is started at http://127.0.0.1:9501\n";
}); $http->on("request", function ($request, $response) {
$response->header("Content-Type", "text/plain");
$response->end("Hello World\n");
}); $http->start();

注意使用httpClient的时候会有一些错误,首先新版的swoole移除了Swoole\Http\Client,会报类找不到,其次要在协程中执行get方法

httpClient.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 "received: {$data}\n";
});
$client->on("error", function($cli){
echo "connect failed\n";
});
$client->on("close", function($cli){
echo "connection close\n";
});
$client->connect("127.0.0.1", 9502, 0.5);

taskServer.php

<?php
$serv = new Swoole\Server("127.0.0.1", 9502, SWOOLE_BASE); $serv->set(array(
'worker_num' => 2,
'task_worker_num' => 4,
)); $serv->on('Receive', function(Swoole\Server $serv, $fd, $from_id, $data) {
echo "接收数据" . $data . "\n";
$data = trim($data);
$task_id = $serv->task($data, 0);
$serv->send($fd, "分发任务,任务id为$task_id\n");
}); $serv->on('Task', function (Swoole\Server $serv, $task_id, $from_id, $data) {
echo "Tasker进程接收到数据";
echo "#{$serv->worker_id}\tonTask: [PID={$serv->worker_pid}]: task_id=$task_id, data_len=".strlen($data).".".PHP_EOL;
$serv->finish($data);
}); $serv->on('Finish', function (Swoole\Server $serv, $task_id, $data) {
echo "Task#$task_id finished, data_len=".strlen($data).PHP_EOL;
}); $serv->on('workerStart', function($serv, $worker_id) {
global $argv;
if($worker_id >= $serv->setting['worker_num']) {
swoole_set_process_name("php {$argv[0]}: task_worker");
} else {
swoole_set_process_name("php {$argv[0]}: worker");
}
}); $serv->start();

  

taskClient.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 "received: {$data}\n";
});
$client->on("error", function($cli){
echo "connect failed\n";
});
$client->on("close", function($cli){
echo "connection close\n";
});
$client->connect("127.0.0.1", 9502, 0.5);

  

[视频教程] 最新版swoole安装和TASKS功能测试的更多相关文章

  1. swoole 安装

    swoole 安装: 1. 下载源代码,我下载的是1.8.6版本wget https://github.com/swoole/swoole-src/archive/1.8.6-stable.tar.g ...

  2. adobe cc最新版 软件安装与激活

     adobe cc最新版 软件安装与激活:https://m.weike.fm/lecture/4912961 说明#:Adobe CC2017的所有软件都可以按照以上方法进行安装,如:Premier ...

  3. nginx+php+swoole安装记录

    领了台阿里服务器1vCPU 1G,做下测试研究. 系统 centos7,使用yum安装. Nginx yum install nginx ##开启nginx service nginx start 安 ...

  4. 利用Swoole实现PHP+websocket直播,即使通讯代码,及linux下swoole安装基本配置

    swoole安装基本配置 php安装swoole 1. 下载swoole安装 wget http://pecl.php.net/get/swoole-1.9.1.tgz tar -zxvf swool ...

  5. VMware® Workstation 15 Pro 最新版软件安装教程

    VMware 15 Pro下载地址: https://pan.baidu.com/s/1ILY2PTqB-BaJMn2hbKO4CA 提取码:vebd 如有问题咨询QQ:2217084817 VMwa ...

  6. android studio最新版的安装和配置(3.1.2)

    android studio最新版的安装和配置(3.1.2) 下载地址: android studio:http://www.android-studio.org/ JDK:http://www.or ...

  7. PHP7.2 、git、swoole安装

    一.安装php 1.安装gcc yum -y install gcc gcc-c++ 2.安装一些库 yum -y install php-mcrypt libmcrypt-devel libxml2 ...

  8. [视频教程] ubuntu系统下安装最新版的MySQL

    视频地址: https://www.bilibili.com/video/av69256331/ 官网文档https://dev.mysql.com/doc/mysql-apt-repo-quick- ...

  9. [视频教程] ubuntu系统下安装最新版PHP7.3.X环境

    视频地址: https://www.bilibili.com/video/av69088870/ 笔记: 先安装一下这个命令 add-apt-repositoryapt-get install sof ...

随机推荐

  1. bay——vSphere Oracle12cR2的RAC搭建安装之配置共享存储 - 副本

    vSphere Oracle12cR2的RAC搭建安装之配置共享存储 https://blog.csdn.net/yuzifen/article/details/82496503 一.第一台机器添加两 ...

  2. MySQL 的 4 种隔离级别,你了解么?

    1.什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做.事务的结束 ...

  3. python的imread、newaxis

    一:imread 用来读取图片,返回一个numpy.ndarray类型的多维数组,具有两个参数: 参数1 filename, 读取的图片文件名,可以使用相对路径或者绝对路径,但必须带完整的文件扩展名( ...

  4. poj 1979 Red and Black 题解《挑战程序设计竞赛》

    地址 http://poj.org/problem?id=1979 Description There is a rectangular room, covered with square tiles ...

  5. Eclipse的使用需要注意的问题

    一.修改/设置字符集编码 设置工作空间编码格式 Window--Preference--General--Workspace下,面板''Text file encoding"选择UTF-8格 ...

  6. Java成员变量和局部变量区别

    成员变量和局部变量区别 变量根据定义位置的不同,我们给变量起了不同的名字.如下图所示: 区别 在类中的位置不同  (重点) 成员变量:类中,方法外 局部变量:方法中或者方法声明上(形式参数) 作用范围 ...

  7. intellij idea从git检出代码并建立工程

    1. 打开intellij idea,点击configure,settings 2. 左侧展开Version Control,点击Git,点击下图中红框中按钮 3. 在弹出窗口中找到git.exe,点 ...

  8. 通过yum在centos安装mysql并配置远程登录

    前言 前天按照Oracle上的文档装了一遍mysql,选了最新8.0的版本,后来出现一些问题,网上搜答案,出来的基本还是5.x版本的解决方案,并不适用8.0版本.然后我就去看了一下公司的正式环境买的阿 ...

  9. 安装v2sora@y

    v2r@y安装 1. 安装nginx 这儿使用tengine进行安装, 可以看以前的博客 1.1) 注意带 http_v2 编译 ./configure --with-http_v2_module 不 ...

  10. 简单探讨一下.NET Core 3.0使用AspectCore的新姿势

    前言 这几天在对EasyCaching做支持.net core 3.0的调整.期间遇到下面这个错误. System.NotSupportedException:"ConfigureServi ...