- 博客(40)
- 资源 (1)
- 收藏
- 关注
原创 PHP 使用Redis防止重复提交
PHP 使用Redis防止重复提交最近工作中遇到了用户申请数据会出现同一秒提交上来两条一样的数据, 对数据的分析造成了很大的影响,然后就开始想到使用Redis重复提交,给动作加锁,在一定时间内不能再次执行。过程中使用了Redis的set方法:2.6.12之后版本,Redis set指令支持了nx、ex模式,并支持原子化地设置过期时间:如果一个请求更新缓存的时间比较长,甚至比锁的有效期还要长,导致在缓存更新过程中,锁就失效了,此时另一个请求会获取锁,但前一个请求在缓存更新完毕的时候,如果不加以判断直
2021-05-20 13:57:58
1090
原创 yii2使用阿里云oss SDK上传下载文件
由于工作中需要使用 阿里云OSS的SDK上传图片实例,经过在网上搜索和自己的实验,已经成功的在项目中使用了,下面的是例子:1.先用composer 下载oss的sdk到框架的vendor中使用composer下载的会通过composer自动加载到项目中,如果是copy到项目中的,则需要去添加配置是的能自动加载:2. 在根目录/common/里面新建Aliyunoss.php文件。3. 代码...
2018-11-30 18:01:21
1551
转载 php识别文件编码,并读出内容,对大文件也很有效率
<?php /** * 检测文件编码 * @param string $file_path 文件路径 * @return string $filesize 默认为空,获取文件的全部内容,如果仅需要获取文件编码类型,获取前一百个字符即可,配合detect_encoding方法使用 * @return string 返回文件内容,自动换行 ...
2018-10-11 14:30:07
1027
原创 PHP 利用 ZipArchive 将多个文件生成压缩包并下载 和解压压缩包
本人是在工作中需要将阿里云oss的图片通过页面进行多选,然后生成压缩包的形式下载,由于oss不支持改功能,则使用的 ZipArchive 进行压缩下载下面是方法: $zipname = tempnam(__dir__.'/log', ''); $zip = new ZipArchive(); if ($zip->open($zipname,...
2018-10-10 14:31:51
2697
原创 php 一些有用的函数
1.多维数组合并成一维数组$arr = [ [ '1','2','3','4','5','6'], ['one','two','three','four','five','six']];$new_arr = call_user_func_array('array_merge', $arr);echo '<pre>';var_dump($new_arr);array(...
2018-10-09 16:31:50
152
原创 一些常用的封装函数(获取当前ip、查找手机号归属地、根据ip获取所在地区)
1. 获取请求ip// 获取请求ip function ip() { if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { $ip = getenv('HTTP_CLIENT_IP'); } elseif(getenv('HTTP_X_FORWARDED_F...
2018-04-09 15:01:16
1429
原创 php csv格式导出大量数据
在php中,经常使用excel表格下载数据,但是当下载的数据量比较大时,会比较慢,以下方法适用于导出大批量的数据,但是当带出的字段较多是,也会影响下载的速度。<?php header ( "Content-type:application/vnd.ms-excel" ); header ( "Content-Disposition:filename=" . iconv ( "UTF...
2018-04-09 14:37:20
956
原创 完美解决 textarea 实时显示字数
完美解决 textarea 实时显示字数不管是使用onkeydown/onkeypress/onkeyup哪种其实都是不完美的,最显而易见的缺陷就是在处理复制、粘贴的内容时是无效的,还有在移动端也有可能会有问题。 这时可以使用onpropertychange,它可以实现实时监听的效果,但是这个事件是IE专属的,这时最好判断是否为IE浏览器,是就是用onpropertychange,不是就使用另一个
2017-11-23 17:20:29
11681
原创 抢购是如今很常见的一个应用场景,主要需要解决的问题
抢购是如今很常见的一个应用场景,主要需要解决的问题有两个:1 高并发对数据库产生的压力2 竞争状态下如何解决库存的正确减少(“超卖”问题)对于第一个问题,已经很容易想到用缓存来处理抢购,避免直接操作数据库,例如使用Redis。重点在于第二个问题,我们看看下面一种常规的实现代码:<?php require('predis/src/Autoloader.php');$redis = new Predi
2017-10-23 19:55:52
343
原创 请求服务器时的状态码详解
当用户点击或搜索引擎向网站服务器发出浏览请求时,服务器将返回Http Header Http头信息状态码,常见几种如下: 1、Http/1.1 200 OK 访问正常 表示成功访问,为网站可正常访问时的状态。2、Http/1.1 301 Moved Permanently 301重定向永久重定向 对搜索引擎相对友好的跳转方式,当网站更换域名时可将原域名作301永久重定向到新域名,原域名
2017-10-23 19:54:33
945
原创 PHP如何解决网站大流量与高并发的问题
首先,确认服务器硬件是否足够支持当前的流量。 普通的P4服务器一般最多能支持每天10万独立IP,如果访问量比这个还要大, 那么必须首先配置一台更高性能的专用服务器才能解决问题 ,否则怎么优化都不可能彻底解决性能问题。 其次,优化数据库访问。 前台实现完全的静态化当然最好,可以完全不用访问数据库,不过对于频繁更新的网站, 静态化往往不能满足某些功能。 缓存技术就是另一个解决方案,就是将动态数据
2017-10-23 19:53:45
261
转载 php结合redis实现高并发下的抢购、秒杀功能的实例
抢购、秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个: 1 高并发对数据库产生的压力2 竞争状态下如何解决库存的正确减少(”超卖”问题)对于第一个问题,已经很容易想到用缓存来处理抢购,避免直接操作数据库,例如使用Redis。重点在于第二个问题常规写法: 查询出对应商品的库存,看是否大于0,然后执行生成订单等操作,但是在判断库存是否大于0处,如果在高并发下就会有问题,导致库存量出现负数<
2017-10-23 19:30:07
672
转载 php 限制用户接口请求频率
有时候我们需要限制一个API访问的频率,例如单用户一分钟之内只能访问多少次。 类似于这样的需求很容易用Redis来实现。 <?php $redis = new Predis\Client(array( 'scheme' => 'tcp', 'host' => '127.0.0.1', 'port' => '6379' )); $redis
2017-10-23 19:22:22
13183
原创 php 一个账号禁止多浏览器多用户登录
思路:可以弄个随机码每次登陆的时候记录到session和数据库里,然后做对比不一样就退出登陆 代码:public function actionLogin() { if(isset($_POST['submit'])){ $username=$this->getRequestParam('username'); $password=$this->getReq
2017-10-16 17:49:27
4032
转载 MySQL 数据库设计总结
MySQL 数据库设计总结规则1:一般情况可以选择MyISAM存储引擎,如果需要事务支持必须使用InnoDB存储引擎。注意:MyISAM存储引擎 B-tree索引有一个很大的限制:参与一个索引的所有字段的长度之和不能超过1000字节。另外MyISAM数据和索引是分开,而InnoDB的数据存储是按聚簇(cluster)索引有序排列的,主键是默认的聚簇(cluster)索引,因
2017-10-14 15:12:15
225
转载 html 锚点三种实现方法
在网页中经常用到锚点,特别是在比较长的页面中锚点的使用会增加用户体验,现在php中文网介绍html 锚点三种实现方法1. 在同一页面中跳转到add2. 在不同页面中,锚点定位在a.html中,从另外一个页面的链接跳转到这个锚点跳转到a.add3. 点击链接触发js事件,同时跳转到锚点,有两种处理方式:第一种:触发add函数并跳转到add锚点第
2017-10-14 13:55:58
47890
转载 PHP和js判断访问终端是否是微信浏览器
js判断是否是微信浏览器function is_weixin() { var ua = window.navigator.userAgent.toLowerCase(); if (ua.match(/MicroMessenger/i) == 'micromessenger') { $("#rs").text("微信浏览器"); } else {
2017-10-14 11:09:46
1166
原创 php ftp操作类
<这里写代码片?phpnamespace modules\Yinzhi\models; use yii; /** * 作用:FTP操作类( 拷贝、移动、删除文件/创建目录,下载 ) * 时间:2017-10-13 * 作者:何为伊人 * QQ:3156976879 */ class Ftplb {public $off; // 返回操作状态(成功/失败) public $conn
2017-10-13 09:48:14
356
原创 yii2的文件土拍你上传类UploadedFile的使用
1UploadedFile上传文件帮助类基本函数通过模型的属性获取一个文件 $file = UploadedFile::getInstance($model,'avatar')通过模型的属性来获取一组文件 $files = UploadedFile::getInstances($model,'avatar')//view $form->fi
2017-09-29 09:29:40
1495
转载 yii2.0 常用的操作
YII2.01.返回自增IDYii::$app->db->getLastInsertID();12.执行SQL语句Yii::$app->db->createCommand($sql)->execute();13.执行SQL语句查询Yii::$app->db->createCommand($sql)->queryAll();14.加密Yii::$app
2017-09-25 11:18:40
430
原创 最新版本sublime的注册码
—– BEGIN LICENSE —– TwitterInc 200 User License EA7E-890007 1D77F72E 390CDD93 4DCBA022 FAF60790 61AA12C0 A37081C5 D0316412 4584D136 94D7F7D4 95BC8C1C 527DA828 560BB037 D1EDDD8C AE
2017-09-19 09:44:20
1655
原创 yii2 中获取 模块、控制器、方法名的方法
在视图中:模块名 $this->context->module->id控制器名 $this->context->id方法名 $this->context->action->id在控制器中 模块名 Yii::$app->controller->module->id; 控制器名 Yii::$app->controller->id 方法名 Yii::$app->co
2017-07-04 11:08:05
1677
转载 究竟啥才是互联网架构“高并发”
一、什么是高并发 高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。 高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per Second),并发用户数等。 响应时间:系统对请求做出响应的时间
2017-05-25 15:31:05
189
原创 yii2 中的request 请求的方法详解
1、普通的get和pst请求123456789101112131415161718192021$request= Yii::$app->request; $get=
2017-05-12 13:51:36
1405
原创 array_map 和 array_filter 的使用
Array_map: array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。 1. 将函数作用到数组中的每个值上,每个值都乘以本身,并返回带有新值的数组:function myfunction($v){ return($
2017-05-12 11:41:33
4629
原创 Php 数组去重
1.使用array_unique方法进行去重 2.使用array_filp方法去重 总结: 在大数组中,array_filp 比 array_unique() 效率要高很多。
2017-05-10 17:38:17
5667
原创 $.ajax() 、$.post()、$.get() 的详解
$.ajax()方法详解1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址。2.type: 要求为String类型的参数,请求方式(post或get)默认为get。注意其他http请求方法,例如put和delete也可以使用,但仅部分浏览器支持。3.timeout: 要求为Number类型的参数,设置请求超
2017-05-10 15:59:27
309
原创 MySQL 中 distinct 的用法
mysql中 distinct 的用法 在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只 用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只能返回它的目标字段,而无法返回其它字段。 需要的话请使用 group by 这个来
2017-05-10 10:34:31
4991
原创 报销审批流程
数据报销的审批流程流程如下:用户提交申请-----》待审------》审批中(通过/驳回)-----》完成主要的表:申请的主表,详细表, 审批记录表,流程表, 节点表 1.主表: id add_userid(添加人id) add_departid(部门) add_time(添加时间)
2017-05-09 17:43:29
2120
转载 MySQL 删除重复数据
昨天遇到一个问题,就是需要删掉一个表里的重复数据,还有就是希望这个表的ID能够连续,因为一旦删掉重复记录,作为自增主键的ID就会不连续了,所以就要想办法搞定表中数据:我想要把名字重复的去掉,但是还希望ID能够连续。首先是将数据库里边的重复记录删掉,我看网上有好多答案是这样的:1 delete from people 2 where peopleId in (sel
2017-05-09 16:59:45
406
转载 HTTP Header 详解
HTTP(HyperTextTransferProtocol)即超文本传输协议,目前网页传输的的通用协议。HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应。就整个网络资源传输而言,包括message-header和message-body两部分。首先传递message-header,即httpheader消息 。http header 消息通常被分为4个部分:gener
2017-05-08 15:02:13
363
转载 MySQL explain的参数详解
explain的参数:1.key ------标识符2. select_type -----查询的类型depednet subquery :子查询中的第一个select依赖于外部的查询primary: 最外层的 select。simple: 简单的 select (没有使用 union或子查询)dependent union: union 语句中的第
2017-05-05 14:02:51
341
原创 mysql 索引 以及 explain 的参数详解
索引:1. 类型: 普通索引、唯一索引、全文索引(FULLTEXT)、联合索引MYsql索引的优化虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保 存一下索引文件。建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在一个大表
2017-05-05 13:37:24
817
转载 索引优化
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过 多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧对你有用。
2017-05-05 11:59:25
214
转载 php heade中rCache-control函数参数的使用
网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常见的取值有private、no-cache、max-age、must-revalidate等,默认为private。其作用根据不同的重新浏览方式分为以下几种情况:(1) 打开新窗口值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。而如果指定了max-
2017-05-05 11:45:16
408
转载 单键索引还是组合索引
转自 http://talentluke.iteye.com/blog/1843868摘自http://book.51cto.com/art/200906/132406.htm 8.4.5 索引的利弊与如何判定,是否需要索引 相信读者都知道索引能够极大地提高数据检索的效率,让Query 执行得更快,但是可能并不是每一位朋友都清楚索引在极大提高检索效
2017-05-05 11:42:09
254
转载 DES/3DES/AES区别
DES/3DES/AES区别公元前400年,古希腊人发明了置换密码。1881年世界上的第一个电话保密专利出现。在第二次世界大战期间,德国军方启用“恩尼格玛”密码机,密码学在战争中起着非常重要的作用。DES 1977年1月,美国政府颁布:采纳IBM公司设计的方案作为非机密数据的正式数据加密标准(DESData Encryption Standard) 。 目前在国内,随着三金
2017-05-04 15:58:43
503
转载 PHP 中获取文件扩展名小结
第1种方法第2种方法第3种方法第4种方法第5种方法第6种方法以上几种方式粗看了一下,好像都行,特别是2、3种方法,在我不知道pathinfo有第二个参数之前也一直在用。但是仔细考虑一下,前四种方法都有各种各样的毛病。要想完全正确获取文件的扩展名,必须要能处理以下三种特殊情况。 没有文件扩展名
2017-05-03 17:42:36
361
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人