自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 docker内给php安装扩展的三种方式

最近做了个php-fpm-alpine的dockerfile文件,基于php7.4.6和alpine3.11;初始文件还是从官方拿的,但是我们日常使用php会用到很多初始镜像内不存在的扩展,所以就总结了一下在docker内为php安装扩展的三种方式,供大家参考,当然也可以直接看我的dockerfile文件:https://github.com/myeye520/dockerfile/tree/master/php/php-fpm7.4.6-alpine3.11。一:docker已经打包好的扩展(例如gd

2020-06-12 16:32:34 2168

原创 跨域session不一致问题解决方案

原理:代码允许携带cookie操作: A.后端代码加header header("Access-Control-Allow-Origin:www.aaa.com"); //允许跨域地址(*,域名,ip)header('Access-Control-Allow-Credentials:true'); //允许客户端携带cookie,注意在此处为true时,上面一行...

2020-02-11 15:28:28 764

原创 laravel设置json返回编码和格式

$result = [ 'code'=>0, 'msg'=>'操作成功', 'data'=>[]];1,返回json数据汉字不转码return response()->json($result)->setEncodingOptions(JSON_UNESCAPED_UNICODE);返回空内容:{ "c...

2019-12-25 11:02:25 1689

原创 laravel日志自建通道解决定时任务运行后日志无权限问题

问题场景:crontab运行php artisan脚本产生的日志文件和laravel接口产生的文件都是laravel.log,由于用户所属不同的原因,如果是crontab先运行,则laravel.log的归属用户为root;而laravel接口先运行,则laravel.log的归属用户为www-data,root大于www-data,所以crnotab先运行,则接口无权限再写日志。为解决这种日...

2019-12-23 17:03:00 670

原创 vue2+Element表格实现跨页多选功能

在使用 reserve-selection 功能与显示树形数据时,该属性是必填的。注意此处很重要,用你每行数据的唯一值,此处我用的activityId,一般数据的唯一值应该是id。错误原因就是未能保证表格dom彻底加载后再使用toggleRowSelection方法,当然这种一般只在弹窗内表格这种场景才会出现,上述《三:数据回显》已经处理了这种问题。仅对 type=selection 的列有效,类型为 Boolean,为 true则会在数据更新之后保留之前选中的数据(需指定 row-key)

2023-04-10 11:22:38 1112

原创 php简洁版雪花算法Snowflake

原理介绍:Snowflake的核心思想是将64bit的二进制数字分成若干部分,每一部分都存储有特定含义的数据,比如说时间戳、机房ID、机器ID、序列号等等,最终生成全局唯一的有序ID。它的标准算法是这样的:0 0000000000000000000000000000000000000000 0000000000 000000000000符号位 41位时间戳,大约够69年 10位(机房+机器ID) 12位序列号 具体位数怎么分配

2021-12-30 18:29:06 2607 1

原创 sql优化

### 优化顺序首先定位系统的瓶颈,判断引起数据库瓶颈的原因---1. 业务优化(定位瓶颈后,判断能否从业务上进行优化,减小对数据库的压力)2. 设计、程序优化(根据应用访问特点,从设计和实现上优化对数据库的访问)3. DB、SYSTEM优化(对数据库处理能力进行升级:io,cpu,mem)4. SQL优化(调整索引,优化sql)---结果:从下往上优化,见效快;从上往下优化,更加彻底### 拆分1. 绝大多数的应用不需要分库分表1. 保持简单应用架构1. 先优化,在考虑拆分1

2021-12-09 16:02:15 284

原创 rsa2加解密及签名校验

非对称加解密:第一种用法:私钥签名,公钥验签。---用于签名第二种用法:公钥加密,私钥解密。---用于加解密class Rsa2Controller extends Controller{ /**** * 第一种应用:验签(私钥加密,公钥验签) * @return string */ public function verifySign() { $rsa2 = new Rsa2(); $data = [

2021-07-06 10:18:28 2359

原创 laravel多种方式切换用户执行php artisan命令(其他框架也适用)

背景:在我们多种方式执行php artisan 命令的时候,总是会遇到执行用户为root的可能问题:因为是root执行,所以产生的各种日志文件全部为 root所有,这样在php后续对其操作的时候,就会出现权限不足的情况解决方案:1,正常linux系统切换执行用户]# su www-data //www-data是我的php执行用户名]# php artisan 命令名称2,定时任务crontab中切换执行用户一:正常情况/app # crontab -u ww

2021-05-28 16:00:22 719

原创 mysql关于json查询及laravel使用json查询

### 正常json字段查询#### 1,插入数据```CREATE TABLE `posts` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `user_id` int(11) DEFAULT NULL, `content` json DEFAULT NULL, `created_at` datetime DEFAULT NULL, `updated_at` datetime DEFAULT NULL, PRIMARY K...

2021-05-26 12:28:40 1410

原创 mysql5.7主从同步/复制

1,安装两个mysql(我是直接在本地用docker安装了两个)[root@VM_179_192_centos app]# docker pull mysql:5.7[root@VM_179_192_centos app]# docker create --name mysql573307 -v F:/mysql/mysql57/3307:/var/lib/mysql -v F:/conf/mysql57/3307:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123

2021-04-09 10:40:55 118

原创 Laravel 使用数组条件查询时 in和or 的用法

laravel给出了whereIn的用法:$users = DB::table('users') ->whereIn('id', [1, 2, 3]) ->get();或者在闭包中使用whereIn:$ids = [1,2];$list = User::where(function($query) use ($ids){ $query->whereIn('id', $ids);})

2020-09-29 20:10:06 4172 2

原创 laravel+swagger运用

第一步:安装swagger-php依赖包;composer require 'zircote/swagger-php:2.*'注意:这里要求用2.*版本好兼容下面的swagger语句,如果用3.*版本,不保证兼容代码第二步:生成swagger-json文档;建立swaggerController控制器,用于生成json文档<?phpnamespace App\Http\Controllers;class SwaggerController extends Contro

2020-09-16 14:59:33 727 1

原创 Easyswoole笔记 第一章:部署

本地环境:window10系统,安装了docker for window,内部运行了php和nginx两个服务容器,php容器已经事先映射了9501端口供easyswoole使用;部署代码:1,进入php容器内工作目录(我的容器内映射工作目录为/app),新建项目目录easyswoole,进入/app/easyswoole目录;2,使用composer安装composer require easyswoole/easyswoole=3.xphp vendor/easyswoole/e

2020-09-11 15:02:50 905

原创 详解nginx解析语句

server { ###项目所用端口(如果是要配置项目域名访问,最好用80,如果要ip地址访问,可以使用自定义的端口号,例如:8080) listen 80; ###项目域名(如果是要本地ip访问,则用location或者127.0.0.1皆可) server_name www.tp51.com; ####ssl加密证书(443端口时使用) ##ssl on; ###开启ssl ...

2020-09-08 19:42:52 171

原创 chrome超过80版本后默认禁用第三方cookie,本地无法跨域调试

现象:本地(http)请求线上接口(https)的时候,session无法通过cookie带给后端,造成后端无法和前端完成session用户认证;通过多浏览器测试,只有谷歌80版本以上有这种问题,火狐,IE等都没这个问题;原因:因为谷歌浏览器大于80的版本使用了 cookie的新属性Samesite,由于没有指明SameSite的取值,chrome默认将其设置为了Lax;一:尝试方法:我的laravel框架内加入:$response->headers->add(['Set-Cookie'

2020-09-03 14:54:48 1696

原创 Tcpdf操作html转pdf带页眉和页脚

一:安装Tcpdf依赖composer install tecnickcom/tcpdf二:编写htmlToPdf方法/****** * html生成pdf文件 * tag: 合约生成 * $params['author'] 作者 * $params['title'] 标题 * $params['subject'] 主题 * $params['keywords'] 关键词 * $params['signDate']

2020-08-19 14:33:42 1262

原创 composer 简单使用

1,局部安装在网站根目录 放入 composer.phar 执行文件,以及composer.json文件(内容依赖包名称和版本)例:"require": { "php": ">=5.4.0", "topthink/framework": "~5.0.0", "jpush/jpush": "^3.5"},ps:在require依赖前,先确定已经install过依赖,只需要install一次后,就不需要再install依赖了命令:php composer.p

2020-05-09 17:23:21 234

原创 Thinkphp5钩子与行为小实例

主要分为三个功能点:一:行为定义方法1,一般写在behaviour文件夹,例如 app\index\behavior\Actionlist 类/** 测试行为类*/namespace app\index\behavior;/*** Description of Actionlist* Date 2018年2月8日 18:16:32* @author Carter*...

2020-05-08 16:39:09 271

原创 nginx反向代理之后服务端HTTP_X_FORWARDED_FOR和HTTP_X_REAL_IP获取不到客户端ip地址

进过nginx的反向代理之后,我们在服务端获取$_SERVER['HTTP_X_FORWARDED_FOR']或者$_SERVER['HTTP_X_REAL_IP']时,往往获取不到客户端的外网ip地址,此时需要在做反向代理时设置:location / { proxy_pass http://172.18.184.145:10383; proxy_set_header H...

2020-04-21 15:52:37 1676 1

原创 PHP跨域问题解决方案

首先,我们要明白什么是跨域:跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。浏览器的同源策略:同源是指,域名,协议,端口均相同,有任一不相同皆将造成跨域明白了这些,我们来说说解决跨域问题的两种方案1,header设置允许跨域(推荐) 后端代码设置: // 指定允许其他域名访问header('Acce...

2020-02-11 15:11:02 4684

原创 蜘蛛程序抓取页面内容并按格式插入数据库

<?phpnamespace app\api\controller;use think\Db;/** * 策略业绩报表蜘蛛程序 * Description of Spiderreport * Date 2017-11-14 14:31 * @author Carter */class Spiderreport { /** * 单策略业绩报表蜘蛛 ...

2020-01-20 10:22:45 179

原创 win10专业版配置docker开发环境(公司电脑专用)

一、机器安装的操作系统为WIN10专业版二、系统分区为固态硬盘SSD,分为 C: D: 各100G机械硬盘分为 E: F: G: 各300G其中C:存放win10操作系统,系统直接安装的软件。直接安装到Program FilesD: 安装开发过程中的其他软件,例如notepad++E: 安装各种工作中的资料、数据、备份F: 代码目录,开发中的网站...

2020-01-19 11:11:13 408

原创 获取无限极菜单列表

数据表基本必须字段:id,name,pid,path/*** 获取菜单栏目列表* @param int $pid 父级id* @return array*/public function getMenuCategory($pid = 0){ $temp_arr = []; //初始化数组 $firstRes = $this->where(['pi...

2020-01-18 18:43:28 478

原创 zencart简化注册

简化注册流程是蛮人性化的一个体现,ZenCart在注册项目设置时比较累赘,如何在注册时区分必填和选填呢?1、在后台-->Configuration商店设置-->Customer Details客户资料:(1. 将称呼字段、生日字段(可选)、公司字段、传真号码设置为false关闭(2. 姓名、电话、国家地区和地址,这些是发货必须的,不能省;(3. 如果不要邮政编码,可在商...

2020-01-16 11:15:48 246 2

原创 php合并数组

数组$a = array('c'=>'df',2=>'4r',1=>'dd','b'=>'ok');$b = array(2=>'ff','b'=>'ko','a'=>'gfg',9=>'87');1,$c=array_merge($a,$b);如果是字符串键名相同,后面的覆盖前面的,比如$c中"b"=>"ko";如果是...

2020-01-15 11:01:13 108

原创 php小常识

1,所有的魔术方法必须设置为public2,__get()和__set()在设置和获取已有的私有属性的时候自动调用,同样在设置和获取不存在属性的时候也自动调用;3,对象拷贝用 = 的时候,只是复制了指针,内存空间的数据还是同样的,基本和&引用的作用差不多,只有加上clone ,才是勉强的深复制,这时候才是复制成了两份数据4,mkdir创建目录时如果需要创建多层...

2020-01-14 11:45:17 114

原创 php文件流下载和预览文件

下载文件: //读取文件 $fileSize = file_put_contents($fileDir.$fileName,$remoteFile); if(!$fileSize){ echo 'HTTP/1.1 404 NOT FOUND';exit; //Header('HTTP/1.1 404...

2020-01-13 10:38:17 1175

原创 php+grpc+protobuf整合(php客户端+go服务端)

PHP客户端环境本人使用为debian系统下的docker容器安装的php-fpm镜像,php-fpm7.1.13镜像承载系统为alpine;需要安装工具protoc: 将proto文件生成为php文件的编译器grpc_php_plugin: protoc生成关于grpc的php文件的插件grpc.so: php的grpc扩展protobuf.so: php的protobu...

2020-01-10 14:25:57 3307 1

原创 一个代码远程同步shell脚本

#!/bin/bash###远程主机路径remote_path=59.110.165.127:/home/###当前主机路径current_path=/app/rsync_test###同步方法rsync_process(){ rsync -vtr $current_path $remote_path}###输入参数验证if [ $1 = 'y' ]...

2020-01-09 22:01:34 184

原创 在数据库软件里设置mysql最大导入包大小和单表大小

失败背景:通过sqlyog向本地mysql数据库中导入sql文件导入失败, 提示:Got a packet bigger than 'max_allowed_packet' bytes1.在sqlyog中进入mysql的命令界面输入命令:mysql>show VARIABLES like '%max_allowed_packet%';显示:Variable_n...

2020-01-08 16:27:04 623

转载 laravel自定义访问器属性不显示?

定义一个访问器get名字驼峰式Attribute例如:getStatusNameAttribute对应的是status_name,如果是获取的时候,获取自动调用这个访问器,如果你没有获取是不会调用的,数组是不会自动显示,我们需要在数组的时候显示出来,这个时候就需要主动显示1,在类型里面附加进去,主动显示protected $appends = ['check_status_name...

2020-01-07 13:41:14 677

原创 php关于逻辑运算和逻辑短路

1,在逻辑运算里,整形0,浮点型0.0,字符串型 “”,“0”,数组型array(),都属于falseps:字符串类型“0.0” 不属于false,属于true;例:$a = 0;$b = 1;if($a&&$b){ echo "111";}结果:没有输出2,直接输出boolean型值(false,true);echo fal...

2020-01-06 10:20:41 259

原创 php取整函数和随机数函数

A. ceil 是向上进位得到一个值的函数;B. floor 是舍掉小数位得到一个值的函数;C. round 是用来四舍五入的函数A. ceil() 函数向上舍入为最接近的整数。说明:返回不小于 x 的下一个整数,x 如果有小数部分则进一位。ceil() 返回的类型仍然是 float。B. floor() 函数向下舍入为最接近的整数。说明:返回不大于...

2019-12-31 10:42:39 414 1

原创 冒泡排序的两种方式

冒泡排序有两种思想:一:元素1和元素2比较后换位,元素2和元素3比较后换位,元素3和元素4比较后换位。。。。。$arr = array(3,2,18,6,7,10,81,22,25,73);for($i=1;$i<count($arr)-1;$i++){ for($j=count($arr)-1;$j>=$i;$j--){ if($arr[$j...

2019-12-31 10:32:58 327

原创 thinkphp5使用PhpOffice导入excel

安装扩展composer require phpoffice/phpspreadsheet类文件引入扩展use PhpOffice\PhpSpreadsheet\Reader\Xls;use PhpOffice\PhpSpreadsheet\Shared\Date;导入方法public function import(){ //实例化xls类 ...

2019-12-27 10:40:37 1270

转载 用PHP实现POP3邮件的收取

POP协议简介本文简要说明了通过POP3协议收取邮件、MIME邮件的解码的原理;针对收取和MIME解码,提供了两个实用的PHP类,并提供了使用的样例。分为邮件收取、MIME解码两个部分。这里我们先向您介绍邮件的收取,解码部分会在以后的文章中为各位详细的介绍,敬请关注。现在Internet上最大的应用应该是非Email莫属了,我们每天都习惯于每天通过Email进行交流,各大网站也几乎都推出了...

2019-12-26 10:07:16 1545

原创 laravel图形验证码

1,安装扩展在Laravel中有很多图片验证码的库可以使用,我们使用:gregwar/captcha,这个库比较简单,在Laravel中比较常用composer gregwar/captcha2,获取图形验证码这里我们使用的是base64给前端,前后端分离项目上这样比较方便use Gregwar\Captcha\CaptchaBuilder;/** * 获取...

2019-12-24 10:29:02 1005

原创 summernote编辑器批量上传图片

首先布置编辑器<link href="__CSS__/plugins/summernote/summernote.css" rel="stylesheet"><link href="__CSS__/plugins/summernote/summernote-bs3.css" rel="stylesheet"><form method="post" class=...

2018-03-11 12:58:20 2043

原创 php上传类分享,使用简单

最近写了一个文件上传类,支持单个上传,多个上传,限制上传类型,限制上传大小,是否改变上传文件名,自定义上传目录功能; 新建类文件FileUpload.class.php,话不多说,上代码,<?phpclass FileUpload{ private $allowType = array(); //允许上传类型 private $maxSize;

2017-03-28 20:22:32 327

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除