php
feng_fly_28
这个作者很懒,什么都没留下…
展开
-
ThinkPHP3.2.3 添加新模块过程
念旧丶 2017-08-10 11:50:54 3778 收藏分类专栏: PHP 文章标签: thinkphp 添加模块自动生成模块目录从3.2.2版本开始,可以支持自动生成默认模块之外的模块目录以及批量生成控制器和模型类。例如,如果我们需要生成一个Admin模块用于后台应用,在应用入口文件中定义如下:// 绑定Admin模块到当前入口文件define(‘BIND_MODULE’,‘Admin’);define(‘APP_PATH’,’./Application/’);require ‘原创 2021-01-11 15:26:22 · 374 阅读 · 0 评论 -
轻量级RESTful API-分词
仅数KB,适合敏捷开发、移动APP等场景。简单易用,无需GPU配环境,秒速安装。语料更多、模型更大、精度更高,强烈推荐。服务器GPU算力有限,匿名用户配额较少,建议申请免费公益API秘钥auth。轻量级RESTful API。原创 2023-03-07 16:22:50 · 48 阅读 · 0 评论 -
php怎么判断目录下有几个文件
php判断目录下有几个文件的方法:1、使用scandir()函数获取目录下的文件及文件夹名称,会返回一个包含有文件及文件夹名称的数组;2、使用“count(数组)-2”语句来获取目录下文件的数量。在php中,可以利用scandir()和count()函数来判断目录下有几个文件。有一个img目录,里面有8张图片文件。...转载 2022-08-05 10:27:13 · 521 阅读 · 0 评论 -
mysql百万级全⽂索引及match快速查找
建⽴全⽂索引的表的存储引擎类型必须为MyISAM问题是match against对中⽂模糊搜索⽀持不是太好新建⼀个utf8 MyISAM类型的表并建⽴⼀个全⽂索引:CREATE TABLE articles (id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,title VARCHAR(200),body TEXT,FULLTEXT (title,body)) ENGINE=MyISAM其中FULLTEXT原创 2022-05-23 15:01:25 · 182 阅读 · 0 评论 -
PHP intval()函数和floor()函数精度失真问题
$n="19.99";print intval($n*100);//输出1998print floor($n*100);//输出1998//预期两个输出都应该为1999才对的。建议使用高精度处理函数处理类似问题:PHP 处理高精度计算常用函数(钱、加、减、乘、除等)bcadd — 加法bccomp — 比较bcp — 相除bcmod — 求余数bcmul — 乘法bcpow — 次方bcpowmod — 先次方然后求余数bcscale — 给所有函数设置小数位精度bcsqrt —原创 2022-05-17 15:53:11 · 304 阅读 · 0 评论 -
phpstorm格式化
导入以下文件<code_scheme name="Default" version="173"> <option name="LINE_SEPARATOR" value="
" /> <PHPCodeStyleSettings> <option name="COMMA_AFTER_LAST_ARRAY_ELEMENT" value="true" /> <option name="LOWER_CASE_BOOL.原创 2022-05-16 16:06:31 · 1007 阅读 · 0 评论 -
thinkphp配置rewrite模式访问时不生效
使用thinkphp配置rewire模式的路径访问网站时, RewriteEngineonRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] 出现No input file specified 页面提示,在apache配置文件httpd-conf捣腾了好一阵子,都没有解决到,如果开启了虚拟目录,则虚拟目录中 Al原创 2022-03-15 14:10:37 · 621 阅读 · 0 评论 -
延迟任务开发
AsynDelayQueueService.class.php文件<?phpnamespace App\Tool\AsynQueue\Service;use Common\Service\RedisService;/** * 异步延时任务 */class AsynDelayQueueService{ protected $redis; protected $queue; public function __construct() {原创 2022-03-04 15:36:54 · 294 阅读 · 0 评论 -
高并发下如何保证接口的幂等性?
接口幂等性对于开发人员来说,是一个跟语言无关的公共问题。本文分享了一些解决这类问题非常实用的办法,绝大部分内容我在项目中实践过的,给有需要的小伙伴一个参考。不知道你有没有遇到过这些场景:有时我们在填写某些form表单时,保存按钮不小心快速点了两次,表中竟然产生了两条重复的数据,只是id不一样。我们在项目中为了解决接口超时问题,通常会引入了重试机制。第一次请求接口超时了,请求方没能及时获取返回结果(此时有可能已经成功了),为了避免返回错误的结果(这种情况不可能直接返回失败吧?),于是会对该请求重转载 2022-02-25 11:45:48 · 212 阅读 · 0 评论 -
Laravel 限流中间件 throttle 简析
在Laravel 中配置在 app\Http\Kernel.php 中,默认添加到中间件组 api 下,1分钟60次。2. 限流原理获取唯一请求来源,进行唯一标识(key)获取该请求请求次数 (hits)判断是否超过最大限制若达到上限,进入5。未达到,则进入6丢出访问次数限制异常,结束请求。首先判断hits 是否达到限制,若未达到,进入7。若达到,进入8。hits 进行计数 + 1,更新到缓存中。 若是第一次,则需要 hits = 1(次数), 并添加访问标识 key (1分钟)到.转载 2021-11-01 11:21:44 · 2193 阅读 · 0 评论 -
localStorage 和 sessionStorage
cookie和session浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie和session跟服务端进行数据交互。cookie和session都是用来跟踪浏览器用户身份的会话方式cookie和session的区别1.使用方式cookie机制:如果不在浏览器中设置过期事件,cookie被保存在内存中,生命周期随浏览器的关闭而结束,这种cookie简称为会话cookie。如果在浏览器中设置了cookie的过期时间,cookie会被保存在硬盘中,关闭浏览器后,cookie数转载 2021-08-20 14:52:19 · 2037 阅读 · 0 评论 -
mysql文档生成工具——mysql_markdown
说在前面的话~mysql_markdown是一款基于GO语言命令行工具,他能生成数据库结构文档,生成的文件为.md(markdown)格式。我们可以通过Typora工具(一款好用的markdown编辑器)将md文件转成word,html,pdf等格式的文件。先上效果先说mysql_markdown的下载(我的是windows):拉取mysql_markdown的git项目到本地git clone https://github.com/alicfeng/mysql_markdown.git接下转载 2021-06-09 16:17:17 · 1112 阅读 · 0 评论 -
PhpStorm函数注释的设置
点击ok /** * @param int $a * @return int * @author fyf * @date 2021/5/31 16:05 */ public function test($a=1){ return 22; }原创 2021-05-31 16:07:13 · 150 阅读 · 1 评论 -
谷歌浏览器的无痕窗口
原创 2021-05-20 16:02:44 · 257 阅读 · 0 评论 -
php excel行合并单元格
Yii::$enableIncludePath = false; $objPHPExcel = new PHPExcel(); //设置标题样式加粗跟居中 $objPHPExcel->getActiveSheet()->getStyle('A1:L4')->getFont()->setBold(true); //$objPHPExcel->getActiveSheet()->getStyle('A1:转载 2021-05-13 14:12:02 · 1059 阅读 · 0 评论 -
简单实现redis实现高并发下的抢购/秒杀功能
简述抢购/秒杀是如今很常见的一个应用场景,那么高并发竞争下如何解决超抢(或超卖库存不足为负数的问题)呢?常规写法:查询出对应商品的库存,看是否大于0,然后执行生成订单等操作,但是在判断库存是否大于0处,如果在高并发下就会有问题,导致库存量出现负数这里我就只谈redis的解决方案我们先来看以下php代码是否能正确解决超抢/卖的问题:<?php$redis = new Redis();$redis->connect('127.0.0.1', 6379); //系统库存量转载 2021-04-27 15:57:35 · 1673 阅读 · 2 评论 -
PHP使用Redis的Hash(哈希表)命令
本篇笔记简单介绍了Redis的Hash(哈希表)命令:hDel,hExists,hGet,hGetAll,hIncrBy,hIncrByFloat,hKeys,hLen,hMGet,hMSet,hSet,HSetnx,hVals作用和php的使用1.Hash(哈希表)命令命令 作用 返回值hDel 删除哈希表key中一个或多个字段,传入不存在的字段将被忽略 返回成功删除的字段数hExists 判断哈希表key中是否存在给定的字段 存在true,不存在falsehGet 从哈希表key中获取给定的转载 2021-04-27 14:01:51 · 911 阅读 · 0 评论 -
PHP excel 导出时变为科学计数法的问题
Ecel导出数据时,数字过大的话,会自动转换为科学计数法,显示不够友好。只有将数字类型转换为字符串类型即可。1.将数字类型转换为字符串类型。由于PHP是弱类型语言,很多时候这方法并不奏效2. 在该字符串或者数字中加上"\t"即可 function invite2Excel($objPHPExcel,$sheet_name,$sheet_cell_name,$sheet_data,$active_index=0) { $xlsTitle = iconv('utf-8',原创 2021-04-25 15:42:55 · 972 阅读 · 0 评论 -
PHP在7后引入了强类型
PHP在7后引入了强类型,强类型的目的是为了提升PHP的解析效率,但PHP的本质定义还是弱类型语言,即便是PHP7后也并没有强制应用强类型。关于在开发过程中如何选择PHP的强类型还是弱类型,应该鉴于以下几点考虑:1、使用强类型①当前系统架构是否以效率高作为出发点?如果是,那么尽量使用强类型②当前系统团队是否已经在前面使用了强类型?如果是,那么应该继续遵循使用强类型2、不使用强类型①只是项目迭代更新,尽量不要使用强类型②PHP版本没有升到7以上,不要使用强类型③考虑版本向下兼容性,不要使用强类型原创 2021-04-23 09:16:42 · 473 阅读 · 0 评论 -
库存处理
控制台添加商品时,将商品的属性库存,保存数据库,并将库存添加redis(如:商品id为123,有属性id 20: goods_stock_123 值 [20=>30](库存))控制台编辑商品时,将商品的属性库存,保存数据库,并将库存修改redis(如:商品id为123,有属性id 20:goods_stock_123 值 [20=>30](库存))手机端下订单,如果是秒杀商品,针对redis里的库存进行减少,使用redis锁机制进行减库存。redis减库存成功后,才减数据库库存和下订单。手原创 2021-03-31 16:58:47 · 187 阅读 · 0 评论 -
记住密码
做网站的时候经常会碰到要实现记住密码,下次自动登录,一周内免登陆,一个月内免登陆这种需求。这种功能一般都是通过cookie来实现的。本篇文章将简单说一下如何使用php实现该需求的。当然实现该需求的方法有N多种。整个过程就是用户在登陆的时候,如果选择了记住密码或者一周内免登陆等这个选项的时候,则在用户成功登陆操作完成之后,存储一个实现自动登录的cookie的数据到数据库的用户表里面,作为下次自动登录时验证用。验证通过则自动登录,否则需要输入用户名,密码进行登录。保存的这个cookie值则可以取一个随机码。原创 2021-01-13 13:35:31 · 317 阅读 · 0 评论 -
异步下载-定时任务配置
配置定时任务linux 定时任务 使用cronb写的3秒执行 bash.sh脚本bash.sh脚本里写的 index.php Task run 什么的一句话。可以触发Task控制器的run方法。index.php里写的是tp3.2的入口文件的源代码这里直接是运行php文件,而没有通过apache,所以不会出现超时处理开发 导出excle的耗时任务。因为有统计比较耗时。导出文件代码创建一个ExportLogic控制器,里面写一个orderExp方法:里面写从数据库里统计到数据,下载exel代码。原创 2020-12-17 14:37:43 · 138 阅读 · 0 评论 -
ThinkPHP3.2支持表单令牌
防止同一个请求多次提交config.php 'TOKEN_ON' => true, // 是否开启令牌验证 默认关闭 'TOKEN_NAME' => '__hash__', // 令牌验证的表单隐藏字段名称,默认为__hash__ 'TOKEN_TYPE' => 'md5', //令牌哈希验证规则 默认为MD5 'TOKEN_RESET' => true, //令牌验证出错后是否重置令牌 默认为true在这里插入代码片tags.php<原创 2020-12-11 11:51:59 · 363 阅读 · 0 评论 -
封装scan方法进行redis模糊查询
封装scan方法进行redis模糊查询 public function redisScan($pattern, $count = 1000){ $redis = new \myredis\Datasource(); $myredis = $redis::getRedis('instance1'); $ret = []; $iterator = 0; while (true) { $result =原创 2020-12-07 17:23:23 · 647 阅读 · 0 评论 -
小数点问题
/** * 保留2位小数 * @param $num * @return float */ public function keep2DecimalPlaces($num){ return sprintf("%.2f",substr(sprintf("%.3f", $num), 0, -1)); } $money = round($money ,2);$amount = floatval($input['paym...原创 2020-12-04 15:32:59 · 211 阅读 · 0 评论 -
php 数组时间排序 array_multisort
<?phpdate_default_timezone_set('Asia/Shanghai');$arr = array( 'a'=>array( 'uid'=>12, 'name'=>'zhangsan1', 'ctime'=>'2018-03-20 11:28:00' ), 'b'=>array( 'uid'=>13,原创 2020-11-19 11:45:44 · 480 阅读 · 0 评论 -
mongo easy swoole 最终版
<?php/** * 直播间浏览记录 */namespace App\HttpController\Wx;use App\Common\StatusCode;use App\HttpController\Base;use App\Logic\Common\CodeException;use App\Logic\Common\RoomInfo;use App\Logic\Common\Tools;use App\Logic\Common\WechatUser;use App\Uti原创 2020-11-18 14:48:34 · 336 阅读 · 0 评论