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. [BZOJ2002][Hnoi2010]Bounce弹飞绵羊 LCT

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2002 建图,每次往后面跳就往目标位置连边,将跳出界的点设为同一个点.对于修改操作发现可以用 ...

  2. [BZOJ1008][HNOI2008]越狱 组合数学

    http://www.lydsy.com/JudgeOnline/problem.php?id=1008 正着直接算有点难,我们考虑反着来,用全集减补集. 总的方案数为$m^n$.第一个人有$m$种可 ...

  3. js对象数组深度去重和深度排序

    使用collect.js处理数组和对象 https://github.com/ecrmnn/collect.js/# 引入collect.js https://github.com/ecrmnn/co ...

  4. H.264学习笔记5——熵编码之CAVLC

    H.264中,4x4的像素块经过变换和量化之后,低频信号集中在左上角,大量高频信号集中在右下角.左边的低频信号相对数值较大,而右下角的大量高频信号都被量化成0.1和-1:变换量化后的残差信息有一定的统 ...

  5. 【译】x86程序员手册32-9.4 中断描述符表

    9.4 Interrupt Descriptor Table 中断描述符表 The interrupt descriptor table (IDT) associates each interrupt ...

  6. 迅为工业级arm开发板i.MX6DL开发板软件硬件全开源

    i.MX6是基于ARM Cortex™-A9架构的高扩展性多核系列应用处理器,促进了如高稳定性工业平板电脑.差异化智能本.前装车载中控系统和超高清电子书阅读器等新一代应用的发展.强劲的3D图形加速引擎 ...

  7. Linux下 SpringBoot jar项目后台运行、查看、停用

    运行java jar: nohup java -jar **-0.0.1-SNAPSHOT.jar & 查看进程: 采用top或者ps aux命令.一般 如果后台是springboot,jar ...

  8. json 存 window.localStorage.setItem('hideColums',hideArr);

    onColumnSwitch:function(row, $element){ //JSON.parse() var showColumns=$('#table').bootstrapTable('g ...

  9. Html 内联元素、外联元素 和 可变元素

    块元素(block element)一般是其他元素的容器元素 块元素一般都从新行开始,它可以容纳内联元素和其他块元素,常见块元素是段落标签'P".“form"这个块元素比较特殊,它 ...

  10. 并发-5CAS与AQS

    juc: java.util.concurrent 锁: 悲观锁:写的比较多,对数据的增删改,读(查)少.Lock 乐观锁:反之,读多写少.版本 并发编程之 CAS 的原理 什么是CAS CAS (c ...