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
1条评论

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条评论

pecl 设置代理

使用 pecl install xxx 安装扩展时下载太慢,可设置 HTTP 代理:

pear config-set http_proxy 192.168.1.6:8888

查看配置:

pear config-show

清除代理:

pear config-set http_proxy ''

 

分类至 PHP
0条评论

Laravel Envoy 示例脚本

Laravel Envoy 是一套在远程服务器上执行日常任务的工具。使用了 Blade 风格语法,你可以轻松地配置部署任务、Artisan 命令的执行等。

具体文档:https://learnku.com/docs/laravel/9.x/envoy/12265

下面是一个示例...

分类至 PHP
0条评论

DcatAdmin 七牛云存储之前端文件直传(继续优化)

接上一篇,我们已经实现了浏览器将文件直传七牛云,但是在控制器中引入相关代码,冗长且繁琐。

于是,我今天抽空把前面那段代码优化了一下,原理是利用 Laravel 框架的 Macro 功能,为 Dcat\Admin\Form\Field\File 类添加一个名为 qiniu 方法。

打开 app/Admin/bootstrap.php 文件,添加如下代码...

分类至 PHP
0条评论