php的swoole教程,PHP + Swoole2.0 初体验(swoole入门教程)

PHP + Swoole2.0 初体验(swoole入门教程)

环境:centos7 + PHP7.1 + swoole2.0

准备工作:

一、 swoole 扩展安装

1 、下载swoole

cd/usr/localwget -c https://github.com/swoole/swoole-src/archive/v2.0.8.tar.gztar -zxvf v2.0.8.tar.gzcdswoole-src-2.0.8/

2 编译& 安装

使用phpize来生成php编译配置;

./configure 来做编译配置检测;

make进行编译,make install进行安装;

phpize./configuremake && make install

3 、修改php.ini 加载swoole扩展

extension=swoole.so

4 、重启服务器

servicenginx restart service php-fpm restart

5 、验证是否安装成功?

php-m

66c12507dfe5

二、 telnet 服务安装

1 、安装 telnet telnet-server

yuminstalltelnet telnet-server

2 、检测是否安装成功

rpm-qa telnet-server rpm -qa telnet

66c12507dfe5

3 、重新启动xinetd守护进程

由于telnet服务也是由xinetd守护的,所以安装完telnet-server,要启动telnet服务就必须重新启动xinetd

servicexinetd restart

4 、测试:查看TCP的23端口是否开启正常?

netstat -tnl |grep23

66c12507dfe5

三、 代码

1、 在项目目录 创建 index.php 文件

写入以下代码:

//创建Server对象,监听 127.0.0.1:9502端口$serv =newswoole_server("127.0.0.1",9502);//监听连接进入事件$serv->on('connect',function($serv, $fd){echo"Client: Connect.\n";});//监听数据发送事件$serv->on('receive',function($serv, $fd, $from_id, $data){    $serv->send($fd,"Server: ".$data);});//监听连接关闭事件$serv->on('close',function($serv, $fd){echo"Client: Close.\n";});//启动服务器$serv->start();

这里就创建了一个TCP服务器,监听本机9502 端口,你也可以改成其他的端口号(服务器必须支持此端口);

2、 启动server : cd到你的项目目录下。与index.php文件同级 。

执行

phpindex.php

备注: 也可以直接执行“php /全路径/index.php”;

这个时候,其实Server已经启动了,并且正在运行,监听了本机的9502端口,此时Server处于等待的状态,所以没有任何输出。

注意: 启动之后,不要动了, 便于查看客户端的链接信息。测试成功之后。可以关闭。纯用客户端

3、 我们新开一个窗口 ,使用telnet 链接

# 在第二个Shell窗口telnet127.0.0.19502

输入

hello

结果如下:

66c12507dfe5

此时,我们再返回第一个窗口,就会看到刚才卡住的光标有输出了:

66c12507dfe5

输出的正是我们在OnConnect回调中设置的内容。

4、注意这句话:

Escape characteris'^]'.

这个提示的意思是按Ctrl + ] 会呼出telnet的命令行,出来telnet命令好之后就可以执行telnet命令,例如退出出telnet是quit.

如果你需要退出telnet ,就先使用 Ctrl + ] 呼出 命令行。然后输入:

quit

66c12507dfe5

切换到 server窗口,会看到关闭的提示:

66c12507dfe5

这样子说明整个过程成功了。

5 、断开链接

如果修改了index.php,必须断掉之前,然后重新打开。

新建脚本 起名 swoole_stop.sh (网上找的,我不会写,过!)代码如下:

#! /bin/bashps -eaf |grep"index.php"| grep -v"grep"| awk'{print $2}'|xargskill-9

这需要放在和 index.php 同一个文件夹。

我们需要cd到这个文件夹,执行

shswoole_stop.sh

结果:

66c12507dfe5

反看server 窗口:

66c12507dfe5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474603.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git常用命令解说

http://zensheno.blog.51cto.com/2712776/490748 1. Git概念 1.1. Git库中由三部分组成 Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控…

LeetCode MySQL 1412. 查找成绩处于中游的学生

文章目录1. 题目2. 解题1. 题目 表: Student ------------------------------ | Column Name | Type | ------------------------------ | student_id | int | | student_name | varchar | ------------------------------ student_id 是该表…

java jvm目录,JVM(Java虚拟机)中过程工作目录讲解

JVM(Java虚拟机)中进程工作目录讲解每次我们用Java命令运行我们的Java程序,都会在JVM中开启一个进程,对于每一个进程,都会有一个相对应的工作目录,这个工作目录在虚拟机初始化的时候就已经设置好了,默认的情况下&#…

Javascript 第七天 笔记

通过三天把以前学习的内容复习一下。以便继续学习。 BOM模型 BOM浏览器对象模型 DOM ----> document BOM -----> window Document对象其实是window的一个属性或叫子对象 Window对象的子对象介绍 Window.navigator : 表示浏览器的相关信息 Window.history : 历史记录,或者…

LeetCode MySQL 618. 学生地理信息报告(row_number)

文章目录1. 题目2. 解题1. 题目 一所美国大学有来自亚洲、欧洲和美洲的学生,他们的地理信息存放在如下 student 表中。 | name | continent | |--------|-----------| | Jack | America | | Pascal | Europe | | Xi | Asia | | Jane | Americ…

java非必填字段跳过校验,avalon2表单验证,非必填字段在不填写的时候不能通过验证...

avalon2表单验证,非必填字段在不填写的时候不能通过验证代码var vm avalon.define({$id: "validate1",aaa : "",validate: {onError: function(reasons) {reasons.forEach(function(reason) {console.log(reason.getMessage())})},onValidateAll: functio…

jQuery心得5--jQuery深入了解串讲1

1.CSS-DOM 操作 获取和设置元素的样式属性: css()。 获取和设置元素透明度: opacity 属性(css 的一个属性)。 获取和设置元素高度, 宽度: height(), width(). 在设置值时, 若只传递数字, 则默认单位是 px. 如需要使用其他单位则需传递一个字符串, 例如 $(“p:first”).height(“…

LeetCode MySQL 1225. 报告系统状态的连续日期(date_sub + over)

文章目录1. 题目2. 解题1. 题目 Table: Failed ----------------------- | Column Name | Type | ----------------------- | fail_date | date | ----------------------- 该表主键为 fail_date。 该表包含失败任务的天数.Table: Succeeded --------------------…

mysql tableveiw与表格,javafx将数据库内容输出到tableview表格

一 、创建Fxml文件,用Javafx Scene Builder 编辑页面,创建tableview(表格)和tablecolum(表格中的列),并为其设置fxid;二、生成fxml文件的控制类;三、创建数据库的连接类(使用JDBC驱动);Connect.javaimportj…

UVa 11636 Hello World!

#include<cstdio>#include<cmath>using namespace std;int main(){int n,T1;while(scanf("%d",&n),n>0){printf("Case %d: %d\n",T,(int)ceil(log10(n)/log10(2))); //换底公式}return 0;}转载于:https://www.cnblogs.com/LtRoycePhan…

php mysqliquery 返回值,PHP mysqli_multi_query() 函数_程序员人生

实例执行多个针对数据库的查询&#xff1a;$conmysqli_connect("localhost","my_user","my_password","my_db");// Check connectionif (mysqli_connect_errno($con)){echo "Failed to connect to MySQL: " . mysqli_connec…

LeetCode MySQL 1369. 获取最近第二次的活动(over窗口函数)

文章目录1. 题目2. 解题1. 题目 表: UserActivity ------------------------ | Column Name | Type | ------------------------ | username | varchar | | activity | varchar | | startDate | Date | | endDate | Date | -----------------…

侧边导航栏的实现

F:\java\c侧边栏\侧边菜单栏\MySlidingMenu转载于:https://www.cnblogs.com/ct732003684/archive/2013/03/24/2979416.html

签到 数据库php,php与数据库的连接用法 (签到一)

注册页面//插入js验证window.onload function(){var hid document.getElementById("id");if(hid.value !""){ //当用户名已存在数据库时&#xff0c;提示用户已注册alert("用户名已注册");}}//ht…

LeetCode MySQL 569. 员工薪水中位数(over窗口函数)

文章目录1. 题目2. 解题1. 题目 Employee 表包含所有员工。Employee 表有三列&#xff1a;员工Id&#xff0c;公司名和薪水。 ------------------------- |Id | Company | Salary | ------------------------- |1 | A | 2341 | |2 | A | 341 …

【IEnumerable】扩展方法的使用 C#

直接进入主题吧... IEnumerable : 公开枚举数&#xff0c;该枚举数支持在非泛型集合上进行简单迭代。 好吧&#xff0c;迭代&#xff0c;我就理解成循环&#xff0c;这些名词真晦涩&#xff0c;没意思 今天看的是 Using Extension Methods &#xff0c;使用"扩展方法…

java的制造商,国内某通信设备制造商JavaEE开发岗面试题

1 EJB中有几种Bean&#xff0c;叙述有状态Bean和无状态Bean的区别。答&#xff1a;EJB中有Session Bean&#xff0c;Entity Bean&#xff0c;以及 Message Driven Bean。这两种的 Session Bean都可以将系统逻辑放在 method之中执行&#xff0c;不同的是 Stateful Session Bean …

LeetCode MySQL 571. 给定数字的频率查询中位数

文章目录1. 题目2. 解题1. 题目 Numbers 表保存数字的值及其频率。 ----------------------- | Number | Frequency | -----------------------| | 0 | 7 | | 1 | 1 | | 2 | 3 | | 3 | 1 | -------…

Java中文乱码处理

出现的情况&#xff1a; 表单FORM、POST、GET、超链接、sendRedirect() 解决方法&#xff1a; 如果是POST使用 HttpRequest.setCharacterEncoding("utf-8"); 如果是GET使用 String unew String( req.getParameter("username") .getBytes("iso-8859-1…

mysql 混合模式,SQLServer2005混合模式登录配置(用户登录错误18452,233,4064)

一、错误提示&#xff1a;用户登录失败,该用户与可信SQL Server连接无关联 错误18452原因是远程登录没配置好&#xff0c;配置方法如下&#xff1a;1&#xff1a;开启SQL2005远程连接功能配置工具->SQLServer外围应用配置器->服务和连接的外围应用配置器->打开SQLEXPR…