Swoole

Laravel 中使用 swoole 项目实战开发案例一 (建立 swoole 和前端通信)

隐身守侯 提交于 2020-04-28 05:20:25
1 开发需要环境 工欲善其事,必先利其器。在正式开发之前我们检查好需要安装的拓展,不要开发中发现这些问题,打断思路影响我们的开发效率。 安装 swoole 拓展包 安装 redis 拓展包 安装 laravel5.5 版本以上 如果你还不会用swoole就out了 2 Laravel 生成命令行 php artisan make:command SwooleDemo class SwooleDemo extends Command { protected $signature = ' swoole:demo ' ; protected $description = ' 这是关于swoole的一个测试demo ' ; public function __construct() { parent::__construct(); } public function handle() { $ this ->line( " hello world " ); } } 我们分别运行 php artisan 指令和 php artisan swoole:demo 会看到关于这个命令的说明,和输出 hello world。( laravel 命令行用法详解 ) 3 命令行逻辑代码 编写一个最基础的 swoole 命令行逻辑代码 <? php namespace App\Console

Laravel 从入门到精通系列教程

微笑、不失礼 提交于 2020-04-28 04:34:18
转载;https://laravelacademy.org/laravel-tutorial-5_7 适用于 Laravel 5.5、5.6、5.7 版本,本系列教程将围绕一个 LTS 版本,然后采取增量更新方式,随着 Laravel 版本的升级不断进行更新,直到 Laravel 框架不再维护。比如这个教程是在 Laravel 5.5 教程的基础上,涵盖 5.6、5.7 版本的功能。 有人会问这个教程和官方文档有什么区别, 文档相对晦涩, 很多地方会让新手云里雾里, 且各章节相互独立、松散,你可以将本系列教程看作一本针对 Laravel 的、开放式的、持续更新的、以实例驱动的、深入浅出的非官方实战指南。 本系列教程源码存放在 Github 上: https://github.com/nonfu/laravel-tutorial-code 更新频率:为保证教程质量,每周一、三、五更新。 一、预备篇 PHP 知识储备 Composer 命名空间 Trait 闭包和匿名函数 搭建开发环境 基于 Vagrant + Virtual Box 构建本地开发环境:Homestead(适用于全平台) (Windows 平台安装还可以参考 这篇教程 ) 基于 Docker 构建本地开发环境:Laradock(适用于全平台) 适用于 Mac 的轻量级开发环境:Laravel Valet 适用于

[转]详解Linux(centos7)下安装OpenSSL安装图文方法

此生再无相见时 提交于 2020-04-27 20:12:25
OpenSSL是一个开源的ssl技术,由于我需要使用php相关功能,需要获取https的文件所以必须安装这个东西了,下面我整理了两种关于OpenSSL安装配置方法。 安装环境: 操作系统:CentOs7安静 OpenSSL Version:openssl-1.0.2j.tar.gz 目前版本最新的SSL地址为 http://www.openssl.org/source/openssl-1.0.2j.tar.gz 1、将下载的压缩包放在根目录, 2、在文件夹下解压缩,命令:tar -xzf openssl-1.0.2j.tar.gz,得到openssl-1.0.2j文件夹 3、进入解压的目录:cd openssl-1.0.2j 4、设定Openssl 安装,( --prefix )参数为欲安装之目录,也就是安装后的档案会出现在该目录下: 执行命令: ./config --prefix=/usr/local/openssl 5、执行命令./config -t 6.执行make,编译Openssl 这里如果出现如下错误 make[1]: gcc: Command not found生气 上网查才发现我安装的CentOS7中没有GCC编译器 保证系统网络畅通以后,执行命令 yum -y install gcc 安装GCC(注意,一定要忘了顺畅,不然安装不了) 7、安装 Openssl

[原创] Trie树 php 实现敏感词过滤

痴心易碎 提交于 2020-04-24 09:26:05
[TOC] 背景 项目中需要过滤用户发送的聊天文本, 由于敏感词有将近2W条, 如果用 str_replace 来处理会炸掉的. 网上了解了一下, 在性能要求不高的情况下, 可以自行构造 Trie树(字典树), 这就是本文的由来. 简介 Trie树是一种搜索树, 也叫字典树、单词查找树. DFA可以理解为DFA(Deterministic Finite Automaton), 即 这里借用一张图来解释Trie树的结构: Trie可以理解为确定有限状态自动机,即DFA。在Trie树中,每个节点表示一个状态,每条边表示一个字符,从根节点到叶子节点经过的边即表示一个词条。查找一个词条最多耗费的时间只受词条长度影响,因此Trie的查找性能是很高的,跟哈希算法的性能相当。 上面实际保存了 abcd abd b bcd efg hij 特点: 所有词条的公共前缀只存储一份 只需遍历一次待检测文本 查找消耗时间只跟待检测文本长度有关, 跟字典大小无关 存储结构 PHP 在PHP中, 可以很方便地使用数组来存储树形结构, 以以下敏感词字典为例: 大傻子 大傻 傻子 ↑ 内容纯粹是为了举例...游戏聊天日常屏蔽内容 则存储结构为 { "大": { "傻": { "end": true "子": { "end": true } } }, "傻": { "子": { "end": true }, } }

phpstorm 远程连接服务器进行开发

我怕爱的太早我们不能终老 提交于 2020-04-24 07:09:33
phpstorm phpstorm是一款功能强大的ide编辑器,有了它,你敲代码速度能比用notepad++快数倍(初学者不建议使用ide,建议使用notepad++),缺点是没有固态的电脑带起来吃力(还有电脑不是固态的???) 官网下载地址: https://www.jetbrains.com/phpstorm/ 别问我这个是什么连接: http://idea.lanyus.com/ phpstorm有一大堆的骚操作,例如git,svn版本控制,sftp,ftp,ssh,http client,代码追踪,断点,主题自定义........ 就靠自己发现啦,本文只讲关于开发swoole相关的东西 VMware虚拟机 当你没钱买服务器时,用虚拟机是最好的选择(低配电脑没人权) 下载地址: https://blog.csdn.net/fox_wayen/article/details/78439010 自己百度吧 centos centos系统是搭配虚拟机使用的,如果你有服务器,可直接忽略虚拟机以及这段内容, 下载地址:链接:https://pan.baidu.com/s/1JyiIQO7onYUbwgM-L_Qp1A 密码:uihi phpstorm配置sftp 在看这步之前,确保你有一台能连接上的服务器(虚拟机)哦 1:打开phpstorm,创建一个项目test 2

彻底搞懂 Redis 事务

∥☆過路亽.° 提交于 2020-04-23 18:33:19
提到redis的事务,相信很多初学的朋友会对它的理解和使用有些模糊不清,料想它和我们常见的关系型数据库(mysql 、mssql等)中的事务相同,也支持回滚,但这样理解就进入了一个误区,首先:关系型数据中的事务都是原子性的,而redis 的事务是非原子性的。再多说一句,什么是程序原子性?简单的理解就是:整个程序中的所有操作,要么全部完成,要不全部不完成,不会停留在中间某个环节。那么非原子性就是不满足原子性的条件就是非原子性了。我们用例子来解释一下: 原子性 :数据库中的某个事务A中要更新t1表、t2表的某条记录,当事务提交,t1、t2两个表都被更新,若其中一个表操作失败,事务将回滚。 非原子性 :数据库中的某个事务A中要更新t1表、t2表的某条记录,当事务提交,t1、t2两个表都被更新,若其中一个表操作失败,另一个表操作继续,事务不会回滚。(当然对于关系型数据库不会出现非原子性) Redis事务相关命令: MULTI : 开启事务,redis会将后续的命令逐个放入队列中,然后使用 EXEC命令来原子化 执行这个命令系列。 EXEC: 执行事务中的所有操作命令。 DISCARD: 取消事务,放弃执行事务块中的所有命令。 WATCH: 监视一个或多个key,如果事务在执行前,这个key(或多个key)被其他命令修改,则事务被中断,不会执行事务中的任何命令。 UNWATCH:

PHP+MySQL 千万级数据处理案例(一)(分表)

[亡魂溺海] 提交于 2020-04-22 00:32:21
场景 一个金融公司有 500w 投资用户,每天充值投资 50w 笔,那么该公司每年将近有 1 亿条充值记录,那么我们改如何处理这个充值订单表的数据呢?难不成都放一张表里面,那万一哪天我让你去统计满足某个需求的记录,1 亿条数据里面检索你会累死 mysql 的!今天我们就来讲述一下如何去处理这种情况。 mysql 分布式之分表思路 分表不是随随便便就分表,必须要结合项目的实际情况,比如我们的项目的瓶颈在哪里,区区几千几万几十万或者几 百万的数据用分表那就是高射炮打蚊子了,不要盲目的分表!必须要达到一定的数量级,并且影响了我们的用户的访问速度,性能下降的情况下才能考虑去做分表处理! 画个简单的不能再简单的图吧 分表的思路就是如此简单,借助中间件可以根据不同省份的订单插入到不同省份对应的表当中去,当然实际当中还得要结合自身的业务来寻找制作这个中间件,不要照搬人家的逻辑思路! mysql 分布式之分表实战(插入总表分然后取模分发到分表) //伪代码 //假设用户数据入库 定为每天50w的数据量入库 //我们创建一张用户主表+两张用户分表 用户分表user0 用户分表user1 //首先所有用户数据入用户主表 $sql = insert into users(a,b,c) values($a,$b,$c); $res = $model->query($sql); if($res){ /

PHP vs Golang ? What Are You Thinking ! 你想什么呢 !

馋奶兔 提交于 2020-04-20 12:26:09
在使用 PHP 多年之后,我对 PHP 的优势和劣势已经非常清楚,与后起之秀 Golang 相比,两者已经不在一个重量级。 PHP 更像是 70 kg 级别的选手,脚本语言,极速开发,部署方便,性能可以。 Golang 更像是 90 kg 级别的选手,静态语言,众家所长,部署非常方便,性能非常好。 PHP 的应用主要集中在 Web应用 / API 应用 / 通用脚本。 PHP 部署方面,一般是部署源码。FPM 依赖 Nginx 之类的 Web 服务器;   对于常驻内存 HTTP Server 方面,Workerman 并未普及,Swoole 贴近底层而面临未来版本升级、维护的高成本。 PHP 性能方面,中小型规模应用完全可接受,但一旦服务器数量增多,和 Java 类静态语言的性能差距就会直接暴露出来。 PHP 服务端编程方面,只有 Pcntl 用于多进程编程,比较简陋,Pthreads 多线程不安全,网络编程门槛高,多数在结合框架基础上才能够做一些工作。 Golang 的应用广阔,Web应用 / Web服务器 / 云计算 / 区块链 / 通过脚本,面对各方面都游刃有余,使用上还能带来脚本语言般的体验。 Golang 部署方面,既可以直接 run 文件运行,也可以编译成二进制运行,安全性好。   不依赖 Web 服务器,单文件就可以启动高性能 HTTP Server,资源消耗极少

分布式消息队列应用场景之异步处理、应用解耦、流量削锋和消息通讯理解分析

你说的曾经没有我的故事 提交于 2020-04-20 11:07:37
摘要:消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。 目前在生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,Kafka等。 消息队列应用场景 以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景。 1.异步处理 场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种1.串行的方式;2.并行方式。 (1)串行方式:将注册信息持久化后,发送注册邮件,再发送注册短信。三个业务全部完成后,返回给客户端。 (2)并行方式:将注册信息持久化后,发送注册邮件的同时,发送注册短信。三个业务全部完成后,返回给客户端。与串行的差别是,并行的方式可以提高处理的时间。 假设三个业务节点每个使用100毫秒钟,不考虑其他开销,则串行方式的时间是300ms,并行的时间可能是200毫秒。则串行的方式1秒内可处理3次请求,并行方式1秒内可处理5次请求,综上所述,传统的方式系统的性能(并发量,吞吐量,响应时间)会有瓶颈。如何解决这个问题呢? 引入消息队列,将不是必须的业务逻辑,异步处理。如下图所示 按照上图,用户的响应时间相当于是注册信息写入数据库的时间和将消息插入消息队列,也就是105毫秒。注册邮件,发送短信消息写入队列后,直接返回

分布式消息队列应用场景之异步处理、应用解耦、流量削锋和消息通讯理解分析

一笑奈何 提交于 2020-04-20 10:51:35
摘要:消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。 目前在生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,Kafka等。 消息队列应用场景 以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景。 1.异步处理 场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种1.串行的方式;2.并行方式。 (1)串行方式:将注册信息持久化后,发送注册邮件,再发送注册短信。三个业务全部完成后,返回给客户端。 (2)并行方式:将注册信息持久化后,发送注册邮件的同时,发送注册短信。三个业务全部完成后,返回给客户端。与串行的差别是,并行的方式可以提高处理的时间。 假设三个业务节点每个使用100毫秒钟,不考虑其他开销,则串行方式的时间是300ms,并行的时间可能是200毫秒。则串行的方式1秒内可处理3次请求,并行方式1秒内可处理5次请求,综上所述,传统的方式系统的性能(并发量,吞吐量,响应时间)会有瓶颈。如何解决这个问题呢? 引入消息队列,将不是必须的业务逻辑,异步处理。如下图所示 按照上图,用户的响应时间相当于是注册信息写入数据库的时间和将消息插入消息队列,也就是105毫秒。注册邮件,发送短信消息写入队列后,直接返回