Swoole 入门学习


swoole 之 定时器

  循环触发:swoole_timer_tick    (和js的setintval类似)

  参数1:int $after_time_ms 指定时间【毫秒】

  参数2:mixed $callback_function 执行的函数

参数3:mixed $user_param 用户参数

  清除定时器:bool swoole_timer_clear(int $timer_id)。

  单次触发:swoole_timer_after

  参数1:int $after_time_ms 指定时间【毫秒】

  参数2:mixed $callback_function 执行的函数

参数3:mixed $user_param 用户参数

  示例:  

<?php
//循环执行定时器
swoole_timer_tick(2000,function($timer_id){
echo "执行 $timer_id \n";
}); //单次执行定时器
swoole_timer_after(3000,function(){
echo "3秒后执行 \n";
});
?>

异步TCP服务器

  函数:

    task() 投递异步任务

    on('事件',function(){}) 处理函数,执行异步函数

    finish(),任务处理完成后结果

  示例:

  

<?php
//创建TCP服务器
$serv = new swoole_server('0.0.0.0',9501);
//设置异步进程工作数
$serv->set(array('task_worker_num'=>4));
//投递异步任务
$serv->on('receive',function($serv,$fd,$from_id,$data){
$task_id = $serv->task($data);//异步ID
echo "异步ID:$task_id\n";
});
//处理异步任务
$serv->on('task',function($serv,$task_id,$from_id,$data){
echo "执行异步ID:$task_id";
});
//处理结果
$serv->on('finish',function($serv,$task_id,$data){
echo '执行完成';
}); $serv->start(); ?>

TCP客户端 

<?php
//实例化客户端
$client = new swoole_client(SWOOLE_SOCK_TCP);
//连接服务
$client->connect('192.168.1.5',8080,5) or die('连接失败');//5表示5秒内给到返回数据。
//发送数据
$client->send('hello world') or die('发送失败');
//从服务器接收数据
$data = $client->recv();
if($data){
var_dump($data);
}
//关闭客户端
$client->close();
?>

TCP异步客户端

  示例:

<?php
//创建异步TCP客户端
$client = new swoole_client(SWOOLE_SOCK_TCP,SWOOLE_SOCK_ASYNC);
//注册连接成功的回调
$client->on('connect',function($cli){
$cli->send("hello \n");
});
//注册数据接收$cli,服务端信息$data数据
$client->on('receive',function($cli,$data){
echo "data:$data \n");
});
//注册连接失败
$client->on('error',function($cli){
echo "失败 \n");
});
//注册关闭函数
$client->on('close',function($cli){
echo "关闭 \n");
});
//发起连接
$client->connect('192.168.1.5',8080,10); ?>

swoole 之进程

  

<?php

    //进程对应的执行函数
function doProcess(swoole_process $worker){
echo "PID",$worker->pid,"\n";
sleep(10);
} //创建进程1
$process = new swoole_process("doProcess");
$pid = $process->start(); //创建进程2
$process = new swoole_process("doProcess");
$pid = $process->start(); //创建进程3
$process = new swoole_process("doProcess");
$pid = $process->start(); //等待结束
swoole_process::wait(); ?>

  

  

Swoole 入门学习(二)的更多相关文章

  1. ReactJS入门学习二

    ReactJS入门学习二 阅读目录 React的背景和基本原理 理解React.render() 什么是JSX? 为什么要使用JSX? JSX的语法 如何在JSX中如何使用事件 如何在JSX中如何使用 ...

  2. SpringMVC入门学习(二)

    SpringMVC入门学习(二) ssm框架 springMVC  在上一篇博客中,我简单介绍了一下SpringMVC的环境配置,和简单的使用,今天我们将进一步的学习下Springmvc的操作. mo ...

  3. git入门学习(二):新建分支/上传代码/删除分支

    一.git新建分支,上传代码到新的不同分支  我要实现的效果,即是多个内容的平行分支:这样做的主要目的是方便统一管理属于同一个内容的不同的项目,互不干扰.如图所示: 前提是我的github上已经有we ...

  4. Egg入门学习(二)---理解service作用

    在上一篇文章 Egg入门学习一 中,我们简单的了解了Egg是什么东西,且能做什么,这篇文章我们首先来看看官网对Egg的整个框架的约定如下,及约定对应的目录是做什么的,来有个简单的理解,注意:我也是按照 ...

  5. node入门学习(二)

    一.模块系统 1.创建模块和引用模块 //如何创建一个模块 exports.hello = function(){ console.log('hello worl'); }; //这创建了一个模块 / ...

  6. dubbo入门学习(二)-----dubbo hello world

    一.dubbo hello world入门示例 1.提出需求 某个电商系统,订单服务需要调用用户服务获取某个用户的所有地址: 我们现在需要创建两个服务模块进行测试: 模块 功能 订单服务web模块 创 ...

  7. iOS中 Swift初级入门学习(二)

    // Copyright (c) 2015年 韩俊强. All rights reserved. // import Foundation /* // 控制语句 // for - in // 遍历字符 ...

  8. Objective C 快速入门学习二

    Objective-C 类.对象.方法 1.编写一个复数类: #import <Foundation/Foundation.h>@interface Complex: NSObject / ...

  9. PowerDesigner 15.2入门学习 二

    PowerDesigner中如何生成主键和自增列 1.SQL Server版本: 第一步,首先要建立与数据库的连接,方法较多,这里举个例子: http://www.cnblogs.com/netsql ...

随机推荐

  1. git ---查看工作状态和历史提交

    1.git查看状态 -git status 2.版权声明 版权声明:新建一个   LICENSE.txt   文件 开源协议:MIT   //开源许可里面的最宽松的一个协议,别人可以随便用你的代码,但 ...

  2. git---安装及配置

    git官网:https://git-scm.com 安装: 官网下载->一路Next->安装完成 配置git: 1.win+r进入windows命令行 2.注册: git config - ...

  3. axis2客户端的几种调用方式

    (1)使用RPC方式调用WebService // 使用RPC方式调用WebService RPCServiceClient serviceClient = new RPCServiceClient( ...

  4. Xaml中的转义字符

    字符 转义字符 备注 & (ampersand) & 这个没什么特别的,几乎所有的地方都需要使用转义字符 > (greater-than character) > 在属性( ...

  5. 迅为I.MX6Q开发板配不同分辨率不同尺寸液晶屏幕

    I.MX6Q开发板: 核心板参数 尺寸:51mm*61mm iMX6Q四核CPU:Freescale Cortex-A9 四核 i.MX6Q,主频 1.2 GHz iMX6DL双核CPU:Freesc ...

  6. freopen()重定向的打开和关闭

    freopen函数 功能 使用不同的文件或模式重新打开流,即重定向. 实现重定向,把预定义的标准流文件定向到由path指定的文件中.(直观感觉/实际操作都像是把文件定向到流,难道是说,对流来说就是重定 ...

  7. lua 之 and or not

    and是与运算,返回值如下 如果前者为false或者nil,则返回前者,否则后者 A and B 类似如下语句 if not A then return A else return B end 总结: ...

  8. IIS启用32位应用程序兼容

    针对服务器出现html和jsp页面都可以应用,但唯独asp页面打不开的一种情况 win7的IIS运行在32状态下,原因是ASP程序必须在32位下才能使用ACCESS 设置办法: 打开IIS管理器,点应 ...

  9. redis简介以及安装

    redis作为开源的高性能的键值对数据库,本身是单线程的,性能虽然没有memcache高,但是也是性能跟memcache相差无几的,memcache是多线程的,但是redis本身功能更加强大,学习一下 ...

  10. Conv1D和Conv2D的区别

    我的答案是,在Conv2D输入通道为1的情况下,二者是没有区别或者说是可以相互转化的.首先,二者调用的最后的代码都是后端代码(以TensorFlow为例,在tensorflow_backend.py里 ...