PHP 实现平滑关闭/重启

写过 CLI 常驻进程的老司机肯定遇到过这么一个问题:在需要更新程序的时候,我要怎样才能安全关闭老进程?你可能会想到 NGINX、php-fpm 之类的平滑重启是给进程发送 USR2 信号,然后它就会将当前请求处理完再退出。 但进程是怎样接收信号、处理信号,估计就不是很多人能说清楚了...

分类至 PHP
0条评论

关于 PHP 导入/导出 Excel 文件

很久以前,还在用 php5.x 的时候,将数据导出为 Excel 文件需要用到 PHPExcel 扩展包。随着 php 版本更新到 7.x,PHPExcel 已过时,官方推出全新版本 PhpSpreadsheet。

但无论是 PHPExcel 还是 PhpSpreadsheet,都有个弊端:内存开销极大!这在操作大文件时及其明显,脚本动不动就内存超标。针对这个问题,PhpSpreadsheet 新增了一个缓存功能,可以在操作表格时,将数据缓冲到 Redis、Memcache 等地方。

近年来,开发项目一直使用 DcatAdmin 后台框架,记得框架里有个导出 Excel 的功能,但却不需要安装 PhpSpreadsheet,而是需要安装 Easy Excel...

分类至 PHP
0条评论

HBuilder 开发的 uniapp 运行到 Android 模拟器

最近团队接了一个 APP 项目,前端使用 uniapp 开发,本人想试试效果,奈何我没有安卓手机,也没有苹果电脑。

于是,在网上找了一堆 windows 下的安卓模拟器,试了几个比较出名的:夜神模拟器、逍遥模拟器、雷电模拟器...。这些都无法满足需求,有的会跟 Hyper-V 冲突(需要关闭 Hyper-V 才能运行,我的 Docker 就没法用了),即便模拟器运行成功,启动 APP 后会白屏,只显示底部的 TabBar 栏(包括 uniapp 官方示例也如此)...

分类至 杂项
0条评论

laravel 中 redis set 方法怎么把 nx, ex 怎么一起使用

在 .env 中可以配置 REDIS_CLIENT 指定 Laravel 框架使用 phpredis 或 predis 来操作 Redis:

REDIS_CLIENT=phpredis
#或
REDIS_CLIENT=predis

phpredis 与 predis 区别:

  • phpredis,它是用 c 语言写的 php 的高效扩展:https://github.com/phpredis/phpredis
  • predis,它是用纯 php 代码写的,也用的蛮多的:https://github.com/predis/predis

...

分类至 PHP
0条评论

PHP8 国密 SM4 加解密

OpenSSL 1.1.1 开始已支持国密算法(https://www.openssl.org/news/changelog.txt),现在使用 PHP8 的 OpenSSL 扩展就可以实现国密算法加解密了,本文示例使用的是 PHP 8.1.17。

SM4-CBC 算法加解密示例:...

分类至 PHP
0条评论

关于将金额xx元换算成xx分

接过微信支付的都知道,微信支付需要把单位为元的金额转成单位分再带入接口,于是,有些人会这样写:

$totalFee = intval($money * 100);

金额变量 $money 只精确到小数点后2位,在 mysql 中一般用 decimal(8,2) 类型存储。假设金额为9.70元 ,由于计算 $totalFee 用的是乘法,不像除法可能除不尽,所有你可能认为 $totalFee 的结果就是整数 970。但实际上,当你加上 var_dump 打印的时候,会有意想不到的结果...

分类至 PHP
0条评论

mysql 5.6 计算两个地图坐标的距离

在MySQL 5.6中,可以使用以下公式来计算两个地图坐标之间的距离:

SELECT 
    (6371 * acos(cos(radians(lat1)) * cos(radians(lat2)) * 
    cos(radians(lng2) - radians(lng1)) + sin(radians(lat1)) * 
    sin(radians(lat2)))) AS distance
FROM 
    your_table
WHERE 
    your_table.id = your_id;

其中,lat1lng1是第一个坐标的纬度和经度,lat2lng2是第二个坐标的纬度和经度。your_table是你的表的名称,your_id是你要查询的记录的ID。

这个公式使用了余弦定理来计算两个点之间的距离。它将地球视为一个完美的球体,并假设它的半径为6371公里。

分类至 MySQL
0条评论

禁止 Windows 系统自动更新 AMD 显卡驱动

我的笔记本 CPU 是 AMD Ryzen 7 4800U,搭载了 AMD Radeon 核心显卡,每次在我手动安装 AMD 的官方驱动后,重启电脑 Windows 10 的自动更新就会安装微软自己的显卡驱动(如下图),它把 AMD 的官方驱动覆盖了,导致安装的AMD Radeon Software 软件无法使用...

分类至 杂项
0条评论