Swoole 入门学习(二)
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 入门学习(二)的更多相关文章
- ReactJS入门学习二
ReactJS入门学习二 阅读目录 React的背景和基本原理 理解React.render() 什么是JSX? 为什么要使用JSX? JSX的语法 如何在JSX中如何使用事件 如何在JSX中如何使用 ...
- SpringMVC入门学习(二)
SpringMVC入门学习(二) ssm框架 springMVC 在上一篇博客中,我简单介绍了一下SpringMVC的环境配置,和简单的使用,今天我们将进一步的学习下Springmvc的操作. mo ...
- git入门学习(二):新建分支/上传代码/删除分支
一.git新建分支,上传代码到新的不同分支 我要实现的效果,即是多个内容的平行分支:这样做的主要目的是方便统一管理属于同一个内容的不同的项目,互不干扰.如图所示: 前提是我的github上已经有we ...
- Egg入门学习(二)---理解service作用
在上一篇文章 Egg入门学习一 中,我们简单的了解了Egg是什么东西,且能做什么,这篇文章我们首先来看看官网对Egg的整个框架的约定如下,及约定对应的目录是做什么的,来有个简单的理解,注意:我也是按照 ...
- node入门学习(二)
一.模块系统 1.创建模块和引用模块 //如何创建一个模块 exports.hello = function(){ console.log('hello worl'); }; //这创建了一个模块 / ...
- dubbo入门学习(二)-----dubbo hello world
一.dubbo hello world入门示例 1.提出需求 某个电商系统,订单服务需要调用用户服务获取某个用户的所有地址: 我们现在需要创建两个服务模块进行测试: 模块 功能 订单服务web模块 创 ...
- iOS中 Swift初级入门学习(二)
// Copyright (c) 2015年 韩俊强. All rights reserved. // import Foundation /* // 控制语句 // for - in // 遍历字符 ...
- Objective C 快速入门学习二
Objective-C 类.对象.方法 1.编写一个复数类: #import <Foundation/Foundation.h>@interface Complex: NSObject / ...
- PowerDesigner 15.2入门学习 二
PowerDesigner中如何生成主键和自增列 1.SQL Server版本: 第一步,首先要建立与数据库的连接,方法较多,这里举个例子: http://www.cnblogs.com/netsql ...
随机推荐
- C++中的数学函数汇总
math.h 数学函数库,一些数学计算的公式的具体实现是放在math.h里,具体有: 1 三角函数 double sin (double); double cos (double); double t ...
- ABP教程(二)- 将ABP在本地运行起来
上一篇 我们介绍了什么是ABP,这一篇我们通过原作者的”简单任务系统”例子,演示如何运用ABP开发项目 从模板创建空的web应用程序 ABP提供了一个启动模板用于新建的项目(尽管你能手动地创建项目并且 ...
- 使用Jenkins进行android项目的自动构建(5)
之前在项目中引入的单元测试使用的是JUnit,可以在构建前进行测试,这里在介绍一下使用Instrumentation 进行单元测试.使用Instrumentation进行测试,比之前多一些步骤,需要把 ...
- select 1浅析
今天看到项目代码里有这条语句,不懂select 1 from XXXXXXX里的1是何意,查了一番才知道: 1.select 1 from mytable;与select anycol(目的表集合中的 ...
- vue2.0 路由知识一(路由的创建的全过程)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- eclipse下tomcat临时目录位置
eclipse 开发web程序,启动tomcat服务器的时候.临时目录在你的工作区间workspace\.metadata\.plugins\org.eclipse.wst.server.core\t ...
- 用npm来部署快速一个httpweb服务器
https://blog.csdn.net/u012182627/article/details/55060594 http-server的安装######注意事项 安装http-server的时候 ...
- zabbix4.2学习笔记--安装percona插件监控MySQL
percona-monitoring-plugins是percona专门为MySQL监控的工具,支持Nagios,cacti,zabibx,本文主要介绍percona-monitoring-plugi ...
- 【原】简单shell练习(二)
1.查找awk # cat /etc/passwd |awk -F ':' 'BEGIN {print "name,shell"} {print $1","$7 ...
- linux 服务脚本
#!/bin/bash # # chkconfig: # description: my_SERVICE_NAME is a my Service # # common function . /etc ...