PHP实现滑动验证码
参考源码https://github.com/binwind8/tncode
演示地址http://aso.39gs.com/tncode/index.html
参考上述源码,实现了通过接口访问,验证滑动验证码功能。
原理:后台生成滑动验证码,记录小图偏移量。然后前台用户滑动图片,通过js传递偏移量到后台,如果与后台记录偏移量相同或者在误差允许范围内,则代码验证通过。
偏移量可以记录X轴,也可以记录Y轴验证码X轴 = 浏览器在电脑屏上的X轴 + 验证码在浏览器中的X轴验证码Y轴 = 浏览器在电脑屏上的Y轴 + 验证码在浏览器中的Y轴
Demo本示例通过记录X轴变量实现。
Api接口一获取图片
123456/** * 获取图片校验码接口 */public function getVerificationImage(){ D('VerificationCode')->make();}
Api接口二123456789101112131415/** * 图片校验码校验接口 */ public function ...
PHP-Resque使用
PHP-Resque是现成的框架, 十分方便实现消息队列。
php-resque的设计三种角色在Resque中,一个后台任务被抽象为由三种角色共同完成:
Job | 任务 : 一个Job就是一个需要在后台完成的任务,比如本文举例的发送邮件,就可以抽象为一个Job。在Resque中一个Job就是一个Class。
Queue | 队列 : 也就是上文的消息队列,在Resque中,队列则是由Redis实现的。Resque还提供了一个简单的队列管理器,可以实现将Job插入/取出队列等功能。
Worker | 执行者 : 负责从队列中取出Job并执行,可以以守护进程的方式运行在后台。
那么基于这个划分,一个后台任务在Resque下的基本流程是这样的:在Resque中,有一个很重要的设计:一个Worker,可以处理一个队列,也可以处理很多个队列,并且可以通过增加Worker的进程/线程数来加快队列的执行速度。
流程如下:
将一个后台任务编写为一个独立的Class,这个Class就是一个Job。在需要使用后台程序的地方,系统将Job Class的名称以及所需参数放入队列。以命令行 ...
Docker下部署Kafka
介绍KafkaKafka是一种高吞吐量的分布式发布订阅消息系统。
Kafka系统的角色:
Broker :一台kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic
topic: 可以理解为一个MQ消息队列的名字
Partition:为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上,一个topic可以分为多个partition,每个partition是一个有序的队列。partition中的每条消息 都会被分配一个有序的id(offset)。kafka只保证按一个partition中的顺序将消息发给consumer,不保证一个topic的整体 (多个partition间)的顺序。也就是说,一个topic在集群中可以有多个partition,那么分区的策略是什么?(消息发送到哪个分区上,有两种基本的策略,一是采用Key Hash算法,一是采用Round Robin算法)
ZooKeeperZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实 ...
docker管理工具protainer
介绍Portainer(基于 Go) 是一个轻量级的Web管理界面,可让您轻松管理 Docker 主机 或 Swarm 集群。
Portainer 的使用意图是简单部署。 它包含可以在任何 Docker 引擎上运行的单个容器(Docker for Linux 和 Docker for Windows)。
Portainer 允许您管理 Docker 容器、image、volume、network 等。 它与独立的 Docker 引擎和 Docker Swarm 兼容。
官网 https://portainer.io/)GitHub https://github.com/portainer/portainerDoc https://portainer.readthedocs.io/en/stable/
部署
方法一
12$ docker volume create portainer_data$ docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data p ...
使用Docker Machine
Docker Machine 官方的解释是:
Docker Machine是一个工具,用来在虚拟主机上安装Docker Engine,并使用 docker-machine命令来管理这些虚拟主机。
官方给的Docker Machine的具体使用场景:
1. 你目前只有一个老版本的MacOSX(比如10.10.2)或者Windows系统,想在上边运行docker。
2. 想在远程系统上创建Docker主机。
Docker Engine 主要用来接收和处理docker命令请求的。Docker Machine则主要用来管理 docker化的 host
安装在 Linux 上的也安装十分简单,从 官方 GitHub Release 处直接下载编译好的二进制文件即可。
例如,在 Linux 64 位系统上直接下载对应的二进制包。
12$ sudo curl -L https://github.com/docker/machine/releases/download/v0.13.0/docker-machine-`uname -s`-`uname -m` > /usr/local/bin ...
使用Docker Compose快速搭建Wordpress
Compose 介绍Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。
在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。
Compose 恰好满足了这样的需求。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目。
Compose 中有两个重要的概念:
服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。
安装在 Linux 上的也安装十分简单,从 官方 GitHub Release 处直接下载编译好的二进制文件即可。
例如,在 Linux 64 位系统上直接下载对应的二进制包。
12$ sudo curl -L https://github.com/docker/ ...
Go实现API接口
Go语言,十分方便开发Api接口。而且不需要web服务器就能够实现。现在想返回指定格式的Api,格式如下
123456{ "code": 400, "data": {}, "message": "非法访问!"}
code123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869package webimport ( "fmt" "net/http" "time" "encoding/json")func main() { fmt.Print("ready") http.HandleFunc("/login", loginTa ...
使用Nginx实时剪裁图片
需求我们经常需要处理图片,对图片进行压缩,剪切。例如用户在个人中心上传图片,作为个人头像。此时头像一般为缩略图。
或者前段人员开发时,需要对同一个图片,在不同尺寸屏幕下,显示不同规格的图片。
实现方式常用方式是通过后台程序实现,例如PHP。剪裁不同的图片,然后存储在磁盘中,可以多次调用。
其实我们可以通过Nginx,快速实现。通过Nginx中图片处理模块,轻量、快速实现,图片压缩、剪裁等功能。
http_image_filter_module是nginx提供的集成图片处理模块,支持nginx-0.7.54以后的版本。在网站访问量不是很高磁盘有限不想生成多余的图片文件的前提下可,就可以用它实时缩放图片,旋转图片,验证图片有效性以及获取图片宽高以及图片类型信息。缺点:由于是即时计算的结果,所以网站访问量大的话,不建议使用。
安装默认HttpImageFilterModule模块是不会编译进nginx,需要在configure时候指定--with-http_image_filter_module
先查询Nginx是否安装此模块
1234nginx -V#格式化之后的命令, 方便查看 2> ...
Mtr网络节点诊断工具
一般判断网络连通性用ping 和tracert.ping的话可以来判断丢包率,tracert可以用来跟踪路由.
在Linux中有一个更好的网络连通性判断工具,它可以结合ping nslookup tracert 来判断网络的相关特性,这个命令就是mtr
官网: http://www.bitwizard.nl/mtr/Github: https://github.com/traviscross/mtr
官方说明mtr combines the functionality of the 'traceroute' and 'ping' programs in a single network diagnostic tool.
As mtr starts, it investigates the network connection between the host mtr runs on and a user-specified destination host.
After it determines the address of each netwo ...
Mysql日志记录慢查询及所有Sql
启慢查询日志,可以让MySQL记录下查询超过指定时间的语句。通过定位分析性能的瓶颈,可以更好的优化数据库系统的性能。这是常用的MySQL性能优化方式。精准定位到慢查询语句,可以快速解决问题。
同时,有时候也需要监控所有Sql的执行,我们可以开启Mysql的日志,记录所有的Sql语句,方便排查问题。
记录所有Sql1show variables like "%general_log%";
设置12345set general_log=on;//提示ERROR 1229 (HY000): Variable 'general_log' is a GLOBAL variable and should be set with SET GLOBALset global general_log=on;
再次查看
开启 慢查询1234567891011121314mysql> show variables like 'slow_query%';+---------------------------+---------------- ...