2019
06-10
06-10
PHP 代码分享
MongoDB 教程
正则表达式
jQuery 教程
JavaScript 代码片段
PHP7 教程
php是一种单一继承的语言,我们无法像java一样在一个class中extends多个基类来实现代码重用,现在Traits能解决这一代码重用的问题,它能让开发者在多个不同的class中实现代码重用。
继续阅读 >
实时的响应总是让人兴奋的,就如你在微信里看到对方正在输入,如你在王者峡谷里一呼百应,如你们在直播弹幕里不约而同的666,它们的背后都离不开长连接技术的加持。每个互联网公司里几乎都有一套长连接系统,它们被应用在消息提醒、即时通讯、推送、直播弹幕、游戏、共享定位、股票行情等等场景。而当公司发展到一定规模,业务场景变得更复杂后,更有可能是多个业务都需要同时使用长连接系统。业务间分开设计长连接会导致研...
继续阅读 >
总体流程Web服务器对HTTP请求的处理流程大体上都是这样的:在某个端口监听请求,请求进入后运行程序,然后将程序运行结果以响应的形式发送出去。基于Laravel框架构建的Web应用处理HTTP请求的流程也是如此。所有HTTP请求都会被转发到单入口文件 public/index.php,处理HTTP请求的核心代码如下(忽略HTTP请求处理之外的代码):在上面这段程序中,首先会创建一个 Application 实例,作为...
继续阅读 >
1、概述生成器是PHP5.5引入的新特性,但是目测很少人用到它,其实这是个非常有用的功能。生成器和迭代器有点类似,但是与标准的PHP迭代器不同,PHP生成器不要求类实现Iterator接口,从而减轻了类的开销和负担。生成器会根据需求每次计算并产出需要迭代的值,这对应用的性能有很大的影响:试想假如标准的PHP迭代器经常在内存中执行迭代操作,这要预先计算出数据集,性能低下;如果要使用特定方式计算大量数据,如操作Excel表...
继续阅读 >
一、什么是单点登录SSO(SingleSign-On) SSO是一种统一认证和授权机制,指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护资源时,不再需要重新登录验证。二、单点登录解决了什么问题解决了用户只需要登录一次就可以访问所有相互信任的应用系统,而不用重复登录。 例如C...
继续阅读 >
SQL注入攻击者通过构造恶意SQL命令发送到数据库,如果程序未对用户输入的SQL命令执行判断过滤,那么生成的SQL语句可能会绕过安全性检查,插入其他用于修改后端数据库的语句,并可能执行系统命令,从而对系统造成危害例如删除id为1的帖子,sql如下:如果有人在提交post_id时输入1OR1,你的语句会组合成这样:一般比较常出现在原生的SQL操作,框架一般会解决这方面的问题。通常采用参数控制或过滤特殊字符...
继续阅读 >
一、什么是幻读在一次事务里面,多次查询之后,结果集的个数不一致的情况叫做幻读。而多出来或者少的哪一行被叫做幻行。二、为什么要解决幻读在高并发数据库系统中,需要保证事务与事务之间的隔离性,还有事务本身的一致性。三、MySQL是如何解决幻读的如果你看到了这篇文章,那么我会默认你了解了脏读、不可重复读与可重复读。1.多版本并发控制(MVCC)(快照读/一致性读)多数数据库都实现了多版本并...
继续阅读 >
最近在看UNIX网络编程并研究了一下Redis的实现,感觉Redis的源代码十分适合阅读和分析,其中I/O多路复用(mutiplexing)部分的实现非常干净和优雅,在这里想对这部分的内容进行简单的整理。几种I/O模型为什么Redis中要使用I/O多路复用这种技术呢?首先,Redis是跑在单线程中的,所有的操作都是按照顺序线性执行的,但是由于读写操作等待用户输入或输出都是阻塞的,所以I/O操作在一般情况下往往不能直接返回...
继续阅读 >
根据不同的权限,在菜单栏显示不同的功能,只对菜单进行了限制,若对路由也进行限制,可以根据菜单的例子,请自行完善,开发。下面请认真学习一下laravel的RBAC设计1、建表(用户表、角色表、权限表、用户角色表、角色权限表)CREATE TABLE IF NOT EXISTS mr_role(id int(11) PRIMARY KEY AUTO_INCREMENT COMMENT '自增id',name varchar(30) NOT N...
继续阅读 >
一、下载workermanhttps://www.workerman.net/download二、下载workerman/mysqlhttp://doc3.workerman.net/6402011、定时函数为匿名函数(闭包)use \Workerman\Worker;use \Workerman\Lib\Timer;require_once './Workerman/Autoloader.php';$task = new Worker();// 开启多少个进程运行定时任务,注意多进程并发问题$task->count = 1;$task->onWorkerStart ...
继续阅读 >
1、PHP实现打包zip并下载功能$file_template = FCPATH.'canddata/cand_picture.zip';//在此之前你的项目目录中必须新建一个空的zip包(必须存在)$downname = $card.'.zip';//你即将打包的zip文件名称$file_name = FCPATH.'canddata/'.$card.'.zip';//把你打包后zip所存放的目录$result = copy( $file_template, $file_name );//把原来项目目录存在的zip复制一...
继续阅读 >
悲观锁Mysql实现分布式悲观锁:直接创建一张锁表,然后通过操作该表中的数据来实现了。当我们要锁住某个方法或资源时,我们就在该表中增加一条记录,想要释放锁的时候就删除这条记录。创建这样一张数据库表:CREATE TABLE `methodLock` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', `method_name` varchar(64) NOT NULL&nb...
继续阅读 >
1. 如何设计一个高并发的系统
① 数据库的优化,包括合理的事务隔离级别、SQL语句优化、索引的优化
② 使用缓存,尽量减少数据库 IO
③ 分布式数据库、分布式缓存
④ 服务器的负载均衡
继续阅读 >
最近我遇到了一个 bug,我试着通过 Rails 在以“utf8”编码的 MariaDB 中保存一个 UTF-8 字符串,然后出现了一个离奇的错误:
我用的是 UTF-8 编码的客户端,服务器也是 UTF-8 编码的,数据库也是,就连要保存的这个字符串“ <…”也是合法的 UTF-8。
问题的症结在于,MySQL 的“utf8”实际上不是真正的 UTF-8。
继续阅读 >
有些大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是不堪设想。
继续阅读 >
项目开发中,如果有定时任务的业务要求,我们会使用linux的crontab来解决,但是它的最小粒度是分钟级别,如果要求粒度是秒级别的,甚至毫秒级别的,crontab就无法满足,值得庆幸的是swoole提供的强大的毫秒定时器。应用场景举例我们可能会遇到这样的场景:场景一:每隔30秒获取一次本机内存使用率场景二:2分钟后执行报表发送任务场景三:每天凌晨2点钟定时请求第三方接口,如果接口有数据返回则停止任务,如果接口由于...
继续阅读 >
这里总结了52条对sql的查询优化,下面详细来看看,希望能帮助到你1,对查询进行优化,应尽量避免全表扫描,首先应考虑在where及orderby涉及的列上建立索引。2,应尽量避免在where子句中对字段进行null值判断,创建表时NULL是默认值,但大多数时候应该使用NOTNULL,或者使用一个特殊的值,如0,-1作为默认值。3,应尽量避免在where子句中使用!=或<>操作符,MySQL只有对以下操作符才使用索引:<,<=...
继续阅读 >