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. jsp中非空判断

    function中uname要和id的值相匹配,但是这样不专业,要显示我的专业性,我将使用document获得name的值来判断是否为空,应为这样是专业的写法,我要时刻记住我是专业的 <scri ...

  2. hihocoder offer收割编程练习赛11 D 排队接水

    思路: 莫队算法+树状数组. 莫队算法的基本思想是对大量要查询的区间进行离线处理,按照一定的顺序计算,来降低复杂度.概括来说,我们在知道了[l, r]的解,并且可以通过一个较低的复杂度推出[l - 1 ...

  3. iOS Programming View and View Hierarchy 视图和视图等级

    iOS Programming  View and View Hierarchy 视图和视图等级 1.1(1)File → New → Project.. From the iOS section, ...

  4. vscode增加sftp扩展

    下载 sftp-sync 扩展插件 填写配置 快捷键 ctrl+shift+P 打开指令窗口,输入sftp:config,回车,就会在当前工作工程的.vscode文件夹下生成一个sftp.json文件 ...

  5. [Windows Server 2008] IIS配置伪静态方法(Web.config模式的IIS rewrite)

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:安装伪静态(w ...

  6. 【译】x86程序员手册38-10.2实在址模式下的软件初始化

    10.2 Software Initialization for Real-Address Mode   实地址模式的软件初始化 In real-address mode a few structur ...

  7. leetcode_650. 2 Keys Keyboard_dp

    https://leetcode.com/problems/2-keys-keyboard/ 初始一个A,两种操作,复制当前所有A,粘贴,问得到n个A最少需要多少步操作. class Solution ...

  8. 生产者-消费者中的缓冲区:BlockingQueue接口

    BlockingQueue接口使用场景相信大家对生产者-消费者模式不陌生,这个经典的多线程协作模式,最简单的描述就是生产者线程往内存缓冲区中提交任务,消费者线程从内存缓冲区里获取任务执行.在生产者-消 ...

  9. WPF知识点--渐变色(LinearGradientBrush、GradientStop)

    [LinearGradientBrush-- 使用线性渐变绘制区域](https://msdn.microsoft.com/zh-cn/library/system.windows.media.lin ...

  10. windows sdk编程禁止窗体最大化最小化

    #include <windows.h> /*消息处理函数声明*/ HRESULT CALLBACK WindowProc(HWND hwnd, UINT message, WPARAM ...