- 博客(60)
- 资源 (17)
- 收藏
- 关注
原创 如果取消一个(现金+满减+积分)订单的商品,你如何分摊优惠
优惠分摊,算法很多,这里是从shopnc挖出来,适合优惠条件过滤的算法,实质很简单,但是理解难度还是有一点应用场景:一个订单的商品,如果不参与某种活动的时候,那就需要分摊优惠,一般来说需要分摊的有购物金,积分,优惠券,满减等。而且是在整个订单上来使用优惠。多件N折,限制抢购,团购等都是在商品单价上面体现的,所以难点就在于如何去分摊优惠,比如一个订单用购物金,积分下单了。...
2019-12-31 09:26:57 1066
原创 swoole的task模块可以应用在哪些地方呢?
【使用场景】 Swoole的task模块可以用来做一些异步的慢速任务、耗时场景。如webim中发广播,发送邮件等,把这些任务丢给task进程之后,worker进程可以继续处理新的数据请求,任务完成后会异步通知worker进程告诉它此任务已经完成。此外利用task还可以实现PHP的数据库连接池,异步队列等。【使用须知】必须设置Task进程数:task_worker_num...
2019-12-31 09:26:56 286
原创 swoole_process
swoole 的进程之间有两种通信方式,一种是消息队列(queue),另一种是管道(pipe),对swoole_process 的研究在swoole中显得尤为重要。预备知识IO多路复用swoole 中的io多路复用表现为底层的 epoll进程模型,在C语言中表现为 epoll 函数。 epoll 模型下会持续监听自己名下的素有socket 描述符 fd 当触发了 ...
2019-12-31 09:26:48 731
原创 swoole锁的机制
锁,这个词我们并不陌生,主要的应用场景会发生在高并发下进行锁。今天的这篇文章咱们主要来讲解一下swoole的锁的机制,swoole_lock是如何实现的。swoole_lock类支持5种锁的类型: 文件锁 SWOOLE_FILELOCK 读写锁 SWOOLE_RWLOCK 信号量 SWOOLE_SEM 互斥锁 SWOOLE_MUTEX 自旋锁...
2019-12-31 09:26:34 859
原创 协程与Swoole的原理,相关应用以及适用场景等
什么是协程协程(Coroutine)也叫用户态线程,其通过协作而不是抢占来进行切换。相对于进程或者线程,协程所有的操作都可以在用户态完成,创建和切换的消耗更低。协程是进程的补充,或者是互补关系。 要理解是什么是“用户态的线程”,必然就要先理解什么是“内核态的线程”。 内核态的线程是由操作系统来进行调度的,在切换线程上下文时,要先保存上一个线程的上下文,然后执行下一个线程,当...
2019-12-31 09:26:28 219
原创 swoole+PHP实现自动取消订单
一、业务场景:当客户下单在指定的时间内如果没有付款,那我们需要将这笔订单取消掉,比如好的处理方法是运用延时取消,这里我们用到了swoole,运用swoole的异步毫秒定时器不会影响到当前程序的运行,具体参考:https://wiki.swoole.com/wiki/page/319.html二、说明,order_status为1时代表客户下单确定,为2时代表客户已付款,为0时代表订单已取...
2019-12-31 09:26:19 722
原创 PHP与出库单打印预览,包含下载与打印功能
咱们的开发语言还是用框架:laravel5。应用场景出库单打印出三色单,这个很普遍,以下用PHP来实现出库单的打印预览,主要用到tcpdf插件,整合到laravel项目中。tcpdf插件可以到官网下载最新的版本。我这里用的是最新版本,这里提供下载插件链接:链接:https://pan.baidu.com/s/1Mn8ho_AxyJfWR7YUa0wzhQ提取码:9doa...
2019-12-31 09:26:12 1117
原创 PHP实现地址自动识别的功能实例
地址自动识别现在普遍,特别是用在快递填写地址,姓名,手机号码的时候,会把这些按照一定的规范填写后,点击自动识别后,会自动填写到各自的input。最近也简单的实现了这个功能,给后台添加用户的时候,自动识别地址。以下是效果图具体问题具体分析!代码实现基于laravel完成。一个laravel完整的功能得具备这些:路由route,Model, View, Controller, 我这...
2019-12-31 09:25:14 1400
原创 利用swoole多进程减少后端访问时间的方法
应用场景说明上一篇文章我们讲解了curl模拟多进程处理减少访问的时间,今天的文章给大家利用swoole多进程来处理。利用swoole的前提,是首先要配置好swoole扩展哦!不懂的可以看看这篇配置的文章 :貌似很多人都不会安装和配置swoole应用一:请求接口,减少时间假设我们需要CURL多个地址,例如3个,每个需要1秒,如果我们同步运行至少需要3秒完成,这对用户的体验是非常不...
2019-12-31 09:25:12 134
原创 前后端分离 Ueditor + PHP 实现阿里云Oss上传
首先去百度下载Ueditor PHP(一般都是UTF-8版本)的当然首先要 composer这样滴:"require": { "aliyuncs/oss-sdk-php": "~2.0.0",},解压后结构如下:第一步: 创建OssInUe.php 结构如下 文件名称自定义这里以他为例:第二步: 上菜:<?php if (is_file...
2019-12-31 09:24:54 1016
原创 PHP7带来的重大变革
PHP7带来的新东西1.类型的声明。可以使用字符串(string), 整数 (int), 浮点数 (float), 以及布尔值 (bool),来声明函数的参数类型与函数返回值。declare(strict_types=1);functionadd(int$a,int$b):int{return$a+$b;}echoadd(1,2);echoad...
2019-12-30 16:29:05 115
原创 对比分析PDO和Mysqli
php操作mysql数据库,大家都知道有三种驱动,mysql mysqli pdo,其中mysql在php7之后被废除了。不是本文重点。咱现在来分析一下mysqli和PDO的区别,下面一张表用来说明他们的区别连接方式//PDO$pdo=newPDO("mysql:host=localhost;dbname=database",'username','passwor...
2019-12-30 16:24:06 192
原创 分布式架构演进与图解
分布式系统(distributed system)是建立在网络之上的软件系统。 内聚性:是指每一个数据库分布节点高度自治,有本地的数据库管理系统。 透明性:是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。 在分布式数据系统中,用户感觉不数据是分布的,即用户不须知道关系是否分割,有无副本,数据存在于那个站点以及事物在哪个站点上执行。...
2019-12-30 16:22:07 273
原创 用好SVN与Git,不然很容易跑路的
介绍一下SVNSVN:代码控制器(版本控制器),主要是为了多人协同开发项目,管理代码。也可以管理个人代码。也叫程序界的”后悔药“。SVN(是subversion的简称)是近年来一款基于C/S架构的,非常优秀的版本控制器(可以简单的理解为管理代码的工具,在多人协同开发的时候,尤其重要),与传统的CVS(90年代左右,一个非常优秀的代码管理器,是代码管理器的鼻祖)管理工具类似。SVN可以随...
2019-12-30 16:21:04 146
原创 Python Numpy 数组的基本操作
Numpy是一个通用的数组处理包。它提供了一个高性能的多维数组对象,以及处理这些数组的工具。它是Python科学计算的基本包。Numpy除了具有科学用途外,还可以作为通用数据的高效多维容器。Numpy中的数组Numpy中的数组是一个元素表(通常是数字),所有元素都是相同的类型,由一个正整数元组索引。在Numpy中,数组的维数称为数组的秩。一个整数的元组给出了数组在每个维度上的大小,称为...
2019-12-30 16:19:05 1882
原创 PHP的生成器yield
官方解释yieldyield生成器是php5.5之后出现的,官方文档这样解释:yield提供了一种更容易的方法来实现简单的迭代对象,相比较定义类实现 Iterator 接口的方式,性能开销和复杂性大大降低。生成器的核心是一个yield关键字,一个生成器函数看起来像一个普通的函数,不同的是:普通函数返回一个值,而一个生成器可以yield生成许多它所需要的值。生成器函数被调用时,返回的是一个可...
2019-12-30 10:26:58 235
原创 php是实现websocket实时消息推送的
WebSocket是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。以前的推送技术使用 Ajax 轮询,浏览器需要不断地向服务器发送http请求来获取最新的数据,浪费很多的带宽等资源。使用webSocket通讯,客户端和服务端只需要一次握手建立连接,就可以互相发送消息,进行数据传输,更实时地进行通讯。一次握手建立WebSocket连接浏览器先向服务器发...
2019-12-30 10:26:48 780
原创 Swoole协程与Go协程的区别
进程、线程、协程的概念进程是什么?进程就是应用程序的启动实例。例如:打开一个软件,就是开启了一个进程。进程拥有代码和打开的文件资源,数据资源,独立的内存空间。线程是什么?线程属于进程,是程序的执行者。一个进程至少包含一个主线程,也可以有更多的子线程。线程有两种调度策略,一是:分时调度,二是:抢占式调度。协程是什么?协程是轻量级线程, 协程的创建、切换、挂...
2019-12-30 10:26:36 519
原创 PHP实现用户异地登录提醒功能的方法
有时候你的网站账号被盗或你在别处登录操作后台时,右下角会弹出提示信息,提醒你的账号异地登录,或者会被强制下线。对于这种安全性要求比较高的web网站,很多后台管理都会做这种功能提醒。甄别自己的账号是否被盗或者是否有另一个人此刻登陆了在进行后台操作,这些都是很不安全的,为了避免两个人同时登录同时操作,可强制下线一个账号。我们今天就来讲解这个知识点。当然,通过IP判断是不行的,因为IP是随时会...
2019-12-30 10:26:27 461
原创 基于 LaravelS 实现高性能 HTTP 服务器
LaravelS是laravel的第三方扩展包swoole我们可以通过这个扩展包轻松在 Laravel 应用中实现上述特性。接下来,我们就来演示如何通过这个扩展包在 Laravel 框架中基于 Swoole 的这些特性来实现高性能 Laravel 应用。需要声明的是,基于 Swoole 特性提升应用性能只是提高应用整体性能的一种方式,不是唯一方式。LaravelS 也不是在 Laravel...
2019-12-30 10:26:16 3837 2
原创 Laravel使用swoole来取代nginx作为http服务器
1.是什么限制Laravel框架的速度?Laravel框架启动的时候需要加载很多文件,再加上其出了名的生态环境好,所以在开发过程中我们就会发现有非常多的已经造好的轮子,这也就使得Laravel的一次启动的磁盘IO特别高(就是要加载很多文件),现在的问题就是:每次启动Laravel的时候不都重新加载这些文件就好了,所以用swoole就能很好的解决。2.SwooleSwoole号称重...
2019-12-29 00:31:50 674 1
原创 Mysql主从同步的实现原理与配置
1、什么是mysql主从同步?当master(主)库的数据发生变化的时候,变化会实时的同步到slave(从)库。2、主从同步有什么好处? 水平扩展数据库的负载能力。 容错,高可用。Failover(失败切换)/High Availability 数据备份。 3、主从同步的原理是什么?首先我们来了解master-slave的体系结构。如下图:...
2019-12-29 00:31:47 222
原创 php的对象传值与引用传值
变量赋值与对象赋值对比<?php//声明一个变量并赋值$a=1;//将数据类型的值赋值给一个变量$b=$a;//修改$a的值$a=2;//$a和$b是两个独立的内存空间修改其中一个另一个不受影响echo$b;//1classPerson{...
2019-12-29 00:31:39 220
原创 PHP&Redis实现排行榜实时更新
基本介绍Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数 (score) 却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O (1)。集合中最大的成员数为 2^32 - 1^ (...
2019-12-29 00:31:26 2081
原创 如何防范 PHP安全的方式-session会话劫持与会话固定 ?
一、概述对于Web应用程序来说,加强安全性的第一条原则就是——不要信任来自客户端的数据,一定要进行数据验证以及过滤才能在程序中使用,进而保存到数据层。然而,由于Http的无状态性,为了维持来自同一个用户的不同请求之间的状态,客户端必须发送一个唯一的身份标识符(Session ID)来表明自己的身份。很显然,这与前面提到的安全原则是相违背的,但是没有办法,为了维持状态,我们别无选择,这也导致了S...
2019-12-29 00:31:23 303
原创 Curl 在 Swoole 协程中的解决方案
在 Swoole 应用中,是不推荐使用 Curl 的,因为 Curl 会阻塞进程。本文会用实际的代码和数据,用最直观的方式,让你明白为什么。最后还会给出 Curl 在 Swoole 中的解决方案,如果不想看分析可以直接拉到最后。例程对比直接来跑一下代码,用数据看为什么不推荐在 Swoole 使用 Curl。直接用YurunHttp 的 Curl 和 Swoole Handle...
2019-12-29 00:31:15 3167
原创 深入了解PHP-FPM
PHP-FPM(PHP FastCGI Process Manager)意:PHP FastCGI 进程管理器,用于管理PHP 进程池的软件,用于接受web服务器的请求。PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置。(1). 为什么会出现php-fpmfpm的出现全部因为php-fastcgi出现。为了很好的管理php-fastcgi而实现...
2019-12-29 00:31:08 109
原创 Docker 搭建 PHP 开发环境
docker搭建php环境,因为是本地的开发环境,所以想多尝尝鲜,尽量使用高版本的软件来实现。希望能给同样有需要搭建环境的同学起到一些帮助,少踩一些坑,如果能按照这篇文章的步骤一次搞定那是最好了。先来说一下环境:Docker18.09.2Nginx1.17.1PHP7.3.7XDebug2.7.2PhpStorm2019.1.3VSCode1.36.1...
2019-12-29 00:31:01 527
原创 PHP 中使用 TUS 协议来实现大文件的断点续传
在现代网站应用中,上传文件是非常常见的。在任何语言中,通过使用一些工具,都可以实现文件上传的功能。但是,如果处理大文件上传的需求,还是有点麻烦的。假如你此时正在上传一个很大的文件,大约一个小时过去了,进度是 90%。突然断网了或者浏览器崩溃了,上传的程序退出,你要再全部重新来过。真的很不爽,对不对?还有更让人郁闷的是,如果你的网速很慢,那么,无论你重来多少次,你都不可能上传成功。...
2019-12-29 00:30:56 434
原创 PHP 提取word与PDF文件文本信息
最近遇到了一个海南什么恶心的什么会议系统,其中恶心的需求就是:"xx,你把用户上传的个人简历文本信息提取出来呗,让用户一上传就能看见自己的简历信息,格式有doc,docx,还可能是PDF文件哦.......用什么方式实现不重要,这个需求很重要,客户很重视!"。我面带笑容,说:“好啊,没问题,小case。交给我”,可心里已经十万个CNM过去了,大家懂得。。。。。。 好了,废...
2019-12-29 00:26:53 611
原创 PHP7实现多进程
我们都知道PHP是单进程执行的,PHP处理多并发主要是依赖服务器或PHP-FPM的多进程及它们进程的复用,但PHP实现多进程也意义重大,尤其是在后台Cli模式下处理大量数据或运行后台DEMON守护进程时,多进程的优势不用多说。PHP的多线程也曾被人提及,但进程内多线程资源共享和分配的问题难以解决。PHP也有多线程想关的扩展 pthreads ,但据说不太稳定,且要求环境为线程安全,所用不多。...
2019-12-28 13:26:24 370
原创 PHP判断访客是否移动端浏览器访问的四种方法
在平常工作开发中,我们通常需要开发出PC端和移动端两个不同的系统,从而根据访问端的不同进入到不同的操作界面中。这就需要我们首先要对访问的客户端进行判断是PC端还是移动端。本博文讨论使用PHP判断访问端是否是移动端(或是移动端浏览器)从而确定是移动端访问的4种方法:1、根据 HTTP_X_WAP_PROFILE是否存在进行判断,存在则是移动端(部分服务商会屏蔽该信息)/***是否是...
2019-12-28 13:26:15 204
原创 PHP使用反向Ajax技术实现在线客服系统
反向Ajax技术,又称为服务器推技术,server push等。一般用于“在线客服”、“消息推送”、“即时通信”等功能中,比如新浪微博的私信功能,就是客户端不断的请求服务器并创建连接,去查看服务器有没有返回的信息,建立连接比较浪费服务器资源,下面我将根据客户端创建连接的不同性来介绍一下实现反向Ajax的三种思路。三种思路:1、间隔固定时间创建连接这种方式就是按照固定时间不断的去请...
2019-12-28 13:26:05 303
原创 PHP大文件切割上传并带上进度条功能
没有修改过php.ini文件的话,默认的上传大小限制为2M,那么该如何上传大文件了,比如说上传一个1G多的大文件,可以使用大文件切割上传的方式来解决。何为大文件切割上传?原理:利用HTML5的新特性,将文件内容切割成分段的二进制信息,然后每次向服务器上传一段,而服务器,只需要把我们每次上传的二进制信息整合存储到一个文件中,那么最后这个文件就是所上传的文件。由于php.ini默认的...
2019-12-28 13:25:55 151
原创 PHP7的内核CGI与FastCGI
CGI:是 Web Server 与 Web Application 之间数据交换的一种协议。FastCGI:同 CGI,是一种通信协议,但比 CGI 在效率上做了一些优化。PHP-CGI:是 PHP (Web Application)对 Web Server 提供的 CGI 协议的接口程序。PHP-FPM:是 PHP(Web Application)对 Web Server 提供的 F...
2019-12-28 13:25:41 96
原创 啥叫PHP垃圾回收机制啊?
一、概念垃圾回收机制是一种动态存储分配的方案。它会自动释放程序不再需要的已分配的内存块。垃圾回收机制可以让程序员不必过分关心程序内存分配,从而将更多的精力投入到业务逻辑。在现在的流行各种语言当中,垃圾回收机制是新一代语言所共有的特征,如Python、PHP、C#、Ruby等都使用了垃圾回收机制。二、PHP垃圾回收机制1、在PHP5.3版本之前,使用的垃圾回收机制是单纯的“引用计数...
2019-12-28 13:25:21 112
原创 图片防盗链
1、图片防盗链在一些大型网站中,比如百度贴吧,该站点的图片采用了防盗链的规则,以至于使用下面代码会发生错误。简单代码:<!DOCTYPEhtml><html><head><metacharset="utf-8"><metahttp-equiv="X-UA-Compatible"content="IE=edg...
2019-12-28 13:24:53 522
原创 PHP消息队列如何处理订单和配送
在项目开发者经常会遇到『给用户群发短信』、『订单系统有大量的日志需要记录』或者在秒杀业务的时候服务器无法承受瞬间并发的压力。这种情况下,我们怎么保证系统正常有效的运行呢?这个时候,我们可以引入一个叫『消息队列』的概念来解决上面的需求。消息队列的概念、原理和场景在高并发的时候,程序往往无法做到及时的处理。我们引入一个中间的系统,来进行分流和减压。所以从本质上讲:消息队列就是...
2019-12-28 13:24:41 712
原创 用过php的钩子(hook)?
钩子定义钩子是编程里一个常见概念,非常的重要。它使得系统变得非常容易拓展,(而不用理解其内部的实现机理,这样可以减少很多工作量)。钩子作用钩子函数可以截获并处理其他应用程序的消息。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。钩...
2019-12-28 13:24:28 179
原创 PHP操作Redis
redis 的基本操作方法1.redis 的连接 ://实例化redis$redis=newRedis();//连接$redis->connect('127.0.0.1', 6379);//检测是否连接成功echo"Server is running: ".$redis->ping();// 输出结果 Server is running:...
2019-12-28 13:24:12 53
Lamp 环境搭建 (centos7 php 7.2 + apache 2.4 + Mariadb 10.2)
2018-12-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人