- 博客(44)
- 收藏
- 关注
原创 递归获取文件夹和文件
效果图:try{ $directories = new FileSystem('C:\Program Files (x86)\Windows NT'); $files = $directories->getFiles(); var_dump($files);} catch (Exception $e) {}class FileSystem{ /** * 文件名称升序 * @var int */ public c.
2022-03-15 22:41:43
761
原创 PHP 实现定时秒级任务,并发执行任务思路
实现思想:1、使用Linux系统闹钟信号,实现秒级定时器。2、通过创建子进程,不会出现任务阻塞的情况,即使是while(1)。3、Linux Crontab 也是这个原理。核心代码:\pcntl_async_signals(true);$flag = true;\pcntl_signal(SIGALRM,function()use(&$flag){ var_dump(\date('Y-m-d H:i:s')); if ($flag) {
2021-11-19 12:39:38
942
原创 Swoole 协程暂停、恢复下载任务原理
run(function () { class Worker { // 正在启动 const STATE_CURRENT_STARTING = 1; // 正在运行 const STATE_CURRENT_RUNNING = 2; // 退出状态 const STATE_CURRENT_QUIT = 3; // 暂停完成 const STATE_CURREN.
2021-09-27 18:38:42
302
原创 PHP 递归获取目录
function dirs($dest){ $d = []; foreach (glob("{$dest}*/") as $k => $dir) { $d[] = $dir; $result = dirs($dir); $d = array_merge($d, $result); } return $d;}$dir = dirs(__DIR__ . '/Lib');//$dir = dirs(__DIR__ .
2021-04-13 11:01:50
124
原创 PHP 动态进程池实现思路
1. 进程间通信使用unixsocket2. 此代码仅供参考实现思路,不可直接使用。3. 思路代码: <?php $pidMap = []; $pidMapStatus = []; for ($i = 1; $i <= 3; $i++) { $pid = pcntl_fork(); if ($pid > 0) { $pidMap[$pid]
2020-11-24 18:41:31
476
原创 无限极递归分类
$addresses = array( array('id' => 1, 'address' => '四川省', 'parent_id' => 0), array('id' => 3, 'address' => '攀枝花', 'parent_id' => 1), array('id' => 4, 'address' => '新都区', 'parent_id' => 2), array('id' => 8, 'add.
2020-11-23 23:04:08
99
原创 inotify 扩展监控文件变化,用于常驻内存开发阶段自动加载代码
<?phprequire_once __DIR__ . '/vendor/autoload.php';// 大概原理如此 ……………………………… 具体还是使用框架提供的吧!!// 监控目录$watch_dir = "/mnt/c/Users/twomiao/desktop/test";// 监控文件夹$directories = new Directories();$dirs = $directories->searchdirectories($watch_dir);$d.
2020-11-05 21:14:44
195
原创 PHP8 单线程下载多个M3U8视频
产生背景:最近身边有位同志说:“你了解M3U8文件???,你能用实现一个下载片儿的神器???”。好家伙!一下就提了两个问题此时我就逐个回答。我还不知道M3U8是什么呢,我通过网络知道这是挺流行的网络视频格式。然后那位同志给了我一个网站,我通过“浏览器-》控制台”发现M3U8居然是个文件,然后下面请求出现了很多.ts结尾的视频片段;此时你说用迅雷下载那肯定不现实,然后我就想到用“世界上最好的语言PHP”来做这个事情。然后开始下面这个项目,我已经测试多个网站均无大问题。产生问题:一个500MB的视频文件,可
2020-10-08 20:11:39
692
原创 wsl 删除Linux子系统
步骤:PS C:\Users\twomiao> wslconfig /l适用于 Linux 的 Windows 子系统:Ubuntu-20.04 (默认)PS C:\Users\twomiao> wslconfig /u Ubuntu-20.04正在注销...PS C:\Users\twomiao>最后:“开始”菜单搜索“子系统名称”,然后删除“Linux子系统”。...
2020-07-07 23:21:58
4826
原创 SQLSTATE[08001]: [Microsoft][ODBC Driver 17 for SQL Server]TCP 提供程序: 超时错误 [258].
@SQLSTATE[08001]: [Microsoft][ODBC Driver 17 for SQL Server]TCP 提供程序: 超时错误 [258].题)tp5.0 框架配置Sqlserver,添加:“‘dsn’ => ‘sqlsrv:Server=127.0.0.1;Database=acc’,”即可解决。预览效果...
2019-11-19 17:50:12
13213
1
原创 PHPStorm 2019 版 Xdebug 安装
思路步骤整理:一、下载Xdebug 扩展,添加至php.ini 配置文件二、Chrome for Xdebug helper 插件安装支持 (过于简单,具体请百度)三、PhpStorm Xdebug 配置1、 如何选择适合当前PHP版本的Xdebug 版本呢? 1. 创建PHP文件,添加函数“phpinfo()"查看;复制粘贴到“wizard.php”表单文本框:...
2019-09-02 14:44:19
1607
原创 Hyperf 登录和注册编写,但是感觉自己不适合这个框架~~~
一,前几天我讲解了视图的安装,今天最后一个课程;二,课程内容: 1. 登录接口 ( 思路:验证数据 -> 逻辑验证 -> DB操作 2. 注册接口等价上面三,开始我们的讲解: 1. 先说下不适合自己的原因吧!首先这个框架没有独立验证器,自己就写了一个嘛; 2. 写完独立验证器,风格类似于TP5独立验证器;因...
2019-08-23 21:13:46
2999
1
原创 Hyperf 协程框架实战讲解《视图》
一、Hyperf 协程框架实战讲解《视图》简介:当下基于Swoole 扩展,造的轮子数不胜数;但是主流框架就三个(Swoft 3.5 Star, EasySwoole 2.0+Star, MixPHP v2 1.0+ star),但是我选择了Hyperf 框架;主流框架任选其一就好,自己喜欢哪个框架的风格就选择哪个,深入其一即可。那么我的选择就是Hyperf框架,开始讲解吧!!!不多说了,嘻嘻...
2019-08-19 21:01:35
4656
原创 Ubuntu 18.04.2 LTS sftp 连接失败,个人原因:
1,sshd 连接失败,vim /etc/ssh/sshd_config2,通过命令“/etc/init.d/ssh restart”,重启ssh
2019-07-01 14:25:17
2434
原创 关闭多个子进程Linux命令,便于查找
命令:ps -ef | grep Serve | grep -v grep | cut -c 9-15 | xargs kill -9
2019-06-24 21:49:19
229
原创 PHP递归多维数组转换为一维数组
PHP 递归N级数组,转换为一维数组测试代码:$data = array( '1', ['张三', '账务'], 'name' => [ 'test' => ['t1', 't2', 'list'=>['t4', 't11']] ]);var_dump(arrays_convert_one($data));fun...
2019-06-09 22:39:02
1116
原创 PHP 字节文件转换单位 (Byte, KB, MB, GB, TB)
单位换算// 文件字节大小$byteFile = 5745669164;// 9216 Bytes = 9.000 KBvar_dump(file_convert_unit($byteFile, 'GB', 2));/** * @param $byteFile 文件字节大小 * @param string $unit 9216字节转为 9.000 KB,可选择 [KB, MB...
2019-05-30 21:57:56
1742
原创 Supervisor 管理进程异常退出重启, think/queue 实现异步邮件发送
案例使用背景说下:场景很多说下本文中我们要做什么吧!很多小伙伴不熟悉RabbitMQ 企业级消息队列;我们通过最熟悉的Redis 作为延时队列吧!案例:“实现定时邮件发送,现在我们开始吧!”。一、环境准备: 1. 安装ThinkPHP 5.0 过于简单略过 2. 安装supervisor -- yum install python-setuptools && ea...
2019-05-27 23:34:33
960
原创 Swoole 实现Beanstalkd进程管理器
Jober 工作界面:产生背景:项目中经常会有后台运行任务的需求,比如发送邮件时,因为要连接邮件服务器,往往需要5-10秒甚至更长时间,如果能先给用户一个成功的提示信息,然后在后台慢慢处理发送邮件的操作,显然会有更好的用户体验。当然实际情况远不止这一点,我们可以通过Jober的配合完成 “订单超时关闭、自动评论、QQ邮箱定时发送功能等等”。Jober 是什么通过Swoole 官方提...
2019-05-18 20:28:56
402
原创 SWOOLE 多进程消息系统
场景:适用于大部分消息队列场景,我列举几个常见地方:订单自动取消并归还库存,自动收货,群发邮件,推送微信消息模板,异步邮件发送,会员到期自动取消. . . . . 等等。一、我们开始看下这个消息端系统的实现流程。然后把业务逻辑写在Job类,分别两个方法 [ doJob => 自定义业务, after=> 业务后续操作] 二、Serve-Queue 详细讲解流程:...
2019-04-15 11:42:15
1167
原创 centos 7 安装rabbitmq-server消息中间件
1,打开rabbitmq 官网地址:https://www.rabbitmq.com/install-rpm.html#bintray2,打开PackageCloud这个链接:https://packagecloud.io/rabbitmq/rabbitmq-server/3, 下载对应的rabbitmq-server版本:4,下载对应的erlang 版本:https://pa...
2019-03-21 15:24:31
257
原创 php http_build_query 函数转换为url post data
一次面试编写支付验签接口,当时用http_build_query 转换参数的时候出现了+ 号。当时就很迷惑,后来没办法就很low B 的用foreach 进行拼接出的啦。一、这就是我当时很迷惑的地方,毕竟是支付接口不敢随便瞎整:发现没,出现了加号。因此我就不能再用这个函数进行处理二、通过php.net 手册,知道了原因:发现转换成功了,%20是代表空格的意思。总...
2019-01-19 12:07:14
559
原创 案例讲解$和$$,普通变量和引用变量之间的区别
引用变量和普通变量的区别,通过下面这个案例来告诉大家区别是什么。那我就不多说废话,进入正题。一,当前需求是如图的url ,我只想要根据参数名称获取其值:二,此时肯定有人会说 “ 通过foreach 遍历转换成二维数组来实现”,请接着往下看: 翻阅PHP手册,发现一个函数parse_url(解析url)。这样我们就能轻松实现我们的需求:轻轻松松就拿到了参数部分,如图所示:...
2019-01-07 15:42:39
2324
原创 Swoole 毫秒和秒级定时器封装
引入官网的话:“使 PHP 开发人员可以编写高性能的异步并发 TCP、UDP、Unix Socket、HTTP,WebSocket 服务。Swoole 可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。 使用 PHP + Swoole 作为网络通信框架,可以使企业 IT 研发团队的效率大大提升,更加专注于开发创新产品。”首先我们来看下...
2019-01-07 11:36:10
673
原创 Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
太久没有使用服务器上的数据库, 今天登录发现提示错误信息“Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)”。接下来我们就来解决下:1,通过whereis my.cnf 数据库配置文件位置,通过编辑mysql.sock套接字文件位置:注意:通过命令 mkdir -p /tmp/mysql...
2019-01-03 21:23:23
53383
4
原创 ThinkPHP 5.1 Swoole 版本安装
前言:本来已经出现了EasySwoole, Swoft , MixPHP 等Swoole 常驻框架。但由于ThinkPHP 框架在国内使用较多,所以就打算自己安装一下ThinkSwoole 版本。1,第一步按照官网的提示: 命令模式下输入"composer require topthink/think-swoole "命令:提醒: 你可以通过phpinfo() 来定位 php,in...
2018-11-10 10:57:30
3184
原创 MySQL 强大CASE WHEN 语法讲解
1,当前存在这样2张数据表,数据表关系是为,一对多:讲解1:通过平时的LEFT JOIN(左连接),得到的数据结果是这样:讲解2:通过发现数据返回不对,接下来通过CASE WHEN 语法完成:结果:因此就得到了这样每位同学对应的课程的成绩,是不是CASE WHEN 强大啊!...
2018-09-07 14:17:51
5244
原创 PHP XlsxWriter 扩展 生成 Excel 文件完成Excel导出
通过Excel XlsxWriter 扩展生成Excel 文件,通过下面这个方法完成发送到浏览器:public static function download($filename, $showname = '', $content = '', $expire = 180){ if (is_file($filename)) { $length = filesize($...
2018-08-30 10:44:22
1823
原创 libzip.so.5: cannot open shared object file: No such file or directory 错误导致安装PHP扩展失败原因
前言:平时都觉得安装Linux 扩展很简单嘛,结果今天没想到居然卡了半天时间。安装PHP扩展总共失败2次,一次是因为PHP 版本是5.6 过低导致,后来重装LNMP环境成功切换PHP版本为7.2。原本以为就此安装成功,没想到遇见如下情况:1,通过命令 查看PHP 扩展确实已经编译成功,可是我添加到配置文件始终就是报错:2,经过网上各类文章的翻阅,最终得知使用如下命令可以完成,拿我的这个...
2018-08-28 22:16:02
10338
原创 oneinstack 安装的Lnmp 环境,关闭Opcache
前言:因为本人修改了PHP 代码,提交到服务器环境执行,发现代码始终没有更新。并且更奇怪的是要等待一会儿,才会生效更新代码。因此想到可能是opcache 的原因,这种情况就直接关闭opcache 1, 通过phpinfo()函数,就可得知 opcache.ini 路径:2, 通过vim opcache 路径,编辑并修改两个值 【opcache.enable = 0, opcache_...
2018-08-27 15:50:45
734
原创 Yii 2.0框架 NestedSets 插件完成无限极分类
前言:今天发现RBAC 权限管理,使用一个弹出层加上Ztree 看起来很友好,所以就想到使用Ztree 结合无限极分类。但平时无限极分类挺常用,递归的方式分类过多就会出现内存消耗过大的情况,所以使用了Nestedsets 嵌套结合完成分类。一、通过Composer 安装Nestedset插件到Yii 2.0 框架,使用这条命令“composer require creocoder/yii2-n...
2018-08-24 17:09:26
899
原创 通过案例,讲解PHP static 关键字作用
阐述:使用PHP语言有一段时间了,今天看见某段代码中的static 关键字。突然脑海中想到 static 和 没有static 区别是什么呢?通过案例来讲解,需求是我指定一个目录。统计出这个目录下“有多少个目录数”和“有多少个文件”以及分别显示有哪些“文件夹/ 文件”。1, 这是要获取的目录结构:2, 在此就直接贴代码了,这是“没写static” 关键字运行结果:发现和“源目录”数量和go函数获取...
2018-06-29 11:26:02
1935
1
原创 php 语言 yield 关键字作用
简述:有时候我们需要操作大量数据,比如Excel 这个导出数据的场景。可能几十万记录导出到PHP默认的128 MB 内存不足,当然你可以设置无限制,终究物理内存有限。(今天心情沉闷,有点不开心 ̄へ ̄)1, 创建一个内存数组保存7万数字,代码如下:代码运行结果(设置内存为10MB,无需等待过长时间):2,接下来使用yield 关键字来运行,代码如下:运行结果如下:总结:一次性将数据保存进内存,导致内...
2018-06-25 11:28:57
557
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人