Excel 导入导出工具
1 | composer require phpoffice/phpspreadsheet |
FFmpeg 截取视频中多个图片,然后拼成一张图
1 | //获取文件路径 |
MySQL 事务最全详解
1 | // 我们先查看表中的数据,id为1的age字段是12 |
二进制转图片
1 | <?php |
windos 安装 Laravel/horizon
1 | composer.json 中增加以下两个字段:"platform": { "ext-pcntl": "7.2", "ext-posix": "7.2"},增加至 config 字段中,再次运行安装命令即可~ |
回调函数
1 | $array = [1, 2, 3, 4]; |
并发问题
1 | //正常写法,获取最后一条数据,新的单据编号+1,有并发问题 |
intervention/image慢
1 | // 记录开始时间 |
laravel5.5 中读写分离
1 | 明明刚刚写入了数据,但查询时却报 No query result ,而且只是偶然性出现,没啥规律。 在没有启用 sticky 的时候,使用 write 连接写入数据后立即读取,读取时使用的是 read 连接,这样就有可能出问题。将 sticky 设置为 true 后,在与这个写入操作相同的请求周期内的后续读取操作,仍然使用原来的 write 连接,就不会有这麻烦了。 |
puppeteer 采集异步加载
1 | composer require spatie/browsershot |
session 与 cookie
1 | cookie运行原理 |
PHP-Casbin 的 ABAC 权限控制
1 | https://github.com/php-casbin/php-casbin |
php artisan tinker edit
1 | php artisan tinker |
使用 PHP-version 切换 PHP 版本
1 | [qian@bogon ~ ]$ mkdir $HOME/.local |
动态绘制会员卡图片
1 |
|
PHP不支持Unicode编码
1 | //文件编码UTF-8 |
curl乱码
php curl乱码 curl_setopt ($ch, CURLOPT_ENCODING ,’gzip’);
是告诉 Curl 使用 Gzip 进行解析。 Header 里 Accept-Encoding:gzip 是告诉对方服务器使用 Gzip 进行传输。
curl_setopt($ch, CURLOPT_ENCODING, ‘’);
加了这句话,会在请求时自动加上请求头Accept-Encoding,并且返回内容会自动解压,不会乱码了
PHP 进化史
1 | 匿名类的支持 |
单例模式
1 | /** |
guzzle 绑定 host
1 | $client = new Client(); |
指定顺序插入数组元素
1 | 在数组第2,4个位置插入一个数组 |
guzzle 并行请求接口
1 | composer require "guzzlehttp/guzzle: 5.3.1" |
杀掉过期进程
1 | use Carbon\Carbon; |
根据name和pcode合并职位
1 | $temp = []; |
unicode encode
1 | function unicode_encode($name) |
二维数组排序
1 | //对存储数字的二维数组,按照每个一维数组数字之和的平均值重新排序 |
报错
1 | PHP 里这样不会报错:<?php var_dump(NoFound::class); ?>,不注意的话可能会掉坑。 |
并发场景下的重复插入
1 | $lock = Cache::lock('key', 60); |
小数点 00
1 | $num = [ |
反射之动态代理
1 | 基于动态代理,可以有更多的想象空间,如实现拦截器,属性方法增加,裁剪等等 |
PhpSpreadsheet 导出图片到 Excel
1 | public function export($data) |
PHP 多进程开发
1 | include __DIR__ . '/vendor/autoload.php';//引入自动加载类 |
larvel excel
1 | public function drawings() |
权重随机算法
1 | class WeightedRoundRobin |
base64原理
1 | 数据先做一个 Base64 编码,统统变成可见字符,降低错误率。基于 A-Z、a-z、0-9 以及 '+' 和 '/' 共 64 个字符的编码方式,因为 2 的 6 次方等于 64,所以说只需要 6 个比特即可表示一个 base64 的字符。 |
PHP 内存溢出
1 | class ExportService |
24 小时排行榜实时更新
1 | ZADD KEY_NAME SCORE1 VALUE1.. SCOREN VALUEN |
数组操作
1 | /** |
PHP-fpm MongoDB 连接数
1 | php7 的 MongoDB 扩展中,php 客户端是长连接(及时请求结束,只要 php-fpm 进程没有杀掉,连接就一直保持,目的是下次请求时减少连接带来的性能消耗),并且没有关闭连接的函数。 https://learnku.com/laravel/t/34780 |
批量更新
1 | $materials = $app->material->list($type, 0); // 获取素材列表 |
php7 mongodb 分批删除
1 | $limit = 1000; |
头部插入内容
1 | 如果是图片开头,在图片后面插入文字,如果不是图片开头,直接插入文字到头部 |
生成按时间增长的全局唯一主键
1 |
|
array_search 和 in_array 函数效率问题
1 | 采用 array_flip 翻转后,用 isset 代替 in_array 函数,用 $array[key] 替代 array_search, 这样能解决大数组超时耗时问题 |
把array或json以array字符串的形式输出
1 | class Utils |
unicode 转中文
1 | function UnicodeEncode($str){ |
开放API接口签名验证
1 | AccessKey&SecretKey (开放平台) |
PhpSpreadsheet 小教程
1 | > composer require phpoffice/phpspreadsheet |
进制转换
1 | $res=bin2hex(openssl_encrypt('test','AES-128-ECB',$key,OPENSSL_RAW_DATA)); |
https证书
1 | wget https://dl.eff.org/certbot-auto |
composer
1 | Composer 国内镜像及多线程下载利器 hirak/prestissimo composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ |
Composer 提示 zlib_decode (): data error
1 | $ composer config repo.packagist composer http://packagist.phpcomposer.com |
swoole 进程退出
1 | swoole_process::signal(SIGALRM,function (){ |
常用正则表达式
1 | 数字:^[0-9]*$ |
图片加水印
1 | /* |
素数while循环的分析
1 | function isprime($num) { |
高德地图 SDK https://github.com/Hanson/gaode-sdk
Laravel 插件 PhpSpreadSheet 使用总结 https://phpspreadsheet.readthedocs.io/en/latest/topics/autofilters/ https://learnku.com/articles/29608
https://learnku.com/articles/30048
PHP 速查表 https://free-andy.github.io/php-dict https://github.com/free-andy/php-dict
plaidCTF两道web题目writeup http://blog.wonderkun.cc/2019/04/15/plaidCTF%E4%B8%A4%E9%81%93web%E9%A2%98%E7%9B%AEwriteup/
几个比较有意思的逻辑问题 https://www.xuejiayuan.net/blog/1d15a4dfae8747a3b263052ec024aae2