PHP
twomiao
爱笑的男孩子~
展开
-
php 递归文件夹
【代码】php 递归文件夹。原创 2023-02-11 00:21:25 · 139 阅读 · 0 评论 -
笛卡尔积递归过程解析
代码】笛卡尔积递归过程解析。原创 2022-08-07 20:48:11 · 151 阅读 · 0 评论 -
PHP字符串反转面试题
PHP字符串反转面试题原创 2022-07-25 14:31:06 · 184 阅读 · 0 评论 -
workerman 端口复用作用
长连接:建议关闭端口复用短连接:建议开启端口复用测试代码如下:原创 2022-07-02 12:43:18 · 230 阅读 · 0 评论 -
PHP 生成笛卡尔级数据
PHP 生成笛卡尔级数据格式。原创 2022-06-21 21:57:26 · 125 阅读 · 0 评论 -
递归获取文件夹和文件
效果图: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 · 722 阅读 · 0 评论 -
Socks5 TCP 流量代理
运行:项目地址:https://github.com/twomiao/socks5-proxy原创 2022-01-11 10:55:53 · 1508 阅读 · 0 评论 -
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 · 899 阅读 · 0 评论 -
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 · 264 阅读 · 0 评论 -
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 · 447 阅读 · 0 评论 -
无限极递归分类
$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 · 94 阅读 · 0 评论 -
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 · 174 阅读 · 0 评论 -
PHP8 单线程下载多个M3U8视频
产生背景:最近身边有位同志说:“你了解M3U8文件???,你能用实现一个下载片儿的神器???”。好家伙!一下就提了两个问题此时我就逐个回答。我还不知道M3U8是什么呢,我通过网络知道这是挺流行的网络视频格式。然后那位同志给了我一个网站,我通过“浏览器-》控制台”发现M3U8居然是个文件,然后下面请求出现了很多.ts结尾的视频片段;此时你说用迅雷下载那肯定不现实,然后我就想到用“世界上最好的语言PHP”来做这个事情。然后开始下面这个项目,我已经测试多个网站均无大问题。产生问题:一个500MB的视频文件,可原创 2020-10-08 20:11:39 · 635 阅读 · 0 评论 -
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 · 4785 阅读 · 0 评论 -
tp6.0 和 laravel源码为何如此相似????
tp 6.0.2 代码原创 2020-04-17 17:44:08 · 2385 阅读 · 2 评论 -
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 · 13010 阅读 · 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 · 1592 阅读 · 0 评论 -
Hyperf 协程框架实战讲解《视图》
一、Hyperf 协程框架实战讲解《视图》简介:当下基于Swoole 扩展,造的轮子数不胜数;但是主流框架就三个(Swoft 3.5 Star, EasySwoole 2.0+Star, MixPHP v2 1.0+ star),但是我选择了Hyperf 框架;主流框架任选其一就好,自己喜欢哪个框架的风格就选择哪个,深入其一即可。那么我的选择就是Hyperf框架,开始讲解吧!!!不多说了,嘻嘻...原创 2019-08-19 21:01:35 · 4589 阅读 · 0 评论 -
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 · 1093 阅读 · 0 评论 -
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 · 1672 阅读 · 0 评论 -
Supervisor 管理进程异常退出重启, think/queue 实现异步邮件发送
案例使用背景说下:场景很多说下本文中我们要做什么吧!很多小伙伴不熟悉RabbitMQ 企业级消息队列;我们通过最熟悉的Redis 作为延时队列吧!案例:“实现定时邮件发送,现在我们开始吧!”。一、环境准备: 1. 安装ThinkPHP 5.0 过于简单略过 2. 安装supervisor -- yum install python-setuptools && ea...原创 2019-05-27 23:34:33 · 898 阅读 · 0 评论 -
PHPstorm 免密码登录服务器
摘要:平时都使用Xshell 连接服务器,但始终要在PHPstorm 和 Xshell 之间切换。个人感觉不方便,PHPstorm 既然是IDE自然就有这些功能,网上找了一番确实有,就此记录下来。1) 传输使用RSA加密,所以需要生成公钥和私钥:1, cd /root/.ssh/目录下,会发现有一个文件名"authorized_keys"2, 通过这个命令工具“ssh-keygen -t rs...原创 2018-06-22 10:28:16 · 2999 阅读 · 1 评论 -
Redis实现短信验证码
摘要:平时都通过Cookie, Session, sms_log(数据表)的形式存储短信验证码,但接触到Redis原创 2018-06-22 15:31:02 · 3167 阅读 · 0 评论 -
通过案例,讲解PHP static 关键字作用
阐述:使用PHP语言有一段时间了,今天看见某段代码中的static 关键字。突然脑海中想到 static 和 没有static 区别是什么呢?通过案例来讲解,需求是我指定一个目录。统计出这个目录下“有多少个目录数”和“有多少个文件”以及分别显示有哪些“文件夹/ 文件”。1, 这是要获取的目录结构:2, 在此就直接贴代码了,这是“没写static” 关键字运行结果:发现和“源目录”数量和go函数获取...原创 2018-06-29 11:26:02 · 1913 阅读 · 2 评论 -
php 语言 yield 关键字作用
简述:有时候我们需要操作大量数据,比如Excel 这个导出数据的场景。可能几十万记录导出到PHP默认的128 MB 内存不足,当然你可以设置无限制,终究物理内存有限。(今天心情沉闷,有点不开心 ̄へ ̄)1, 创建一个内存数组保存7万数字,代码如下:代码运行结果(设置内存为10MB,无需等待过长时间):2,接下来使用yield 关键字来运行,代码如下:运行结果如下:总结:一次性将数据保存进内存,导致内...原创 2018-06-25 11:28:57 · 536 阅读 · 1 评论 -
oneinstack 安装的Lnmp 环境,关闭Opcache
前言:因为本人修改了PHP 代码,提交到服务器环境执行,发现代码始终没有更新。并且更奇怪的是要等待一会儿,才会生效更新代码。因此想到可能是opcache 的原因,这种情况就直接关闭opcache 1, 通过phpinfo()函数,就可得知 opcache.ini 路径:2, 通过vim opcache 路径,编辑并修改两个值 【opcache.enable = 0, opcache_...原创 2018-08-27 15:50:45 · 709 阅读 · 0 评论 -
Yii 2.0框架 NestedSets 插件完成无限极分类
前言:今天发现RBAC 权限管理,使用一个弹出层加上Ztree 看起来很友好,所以就想到使用Ztree 结合无限极分类。但平时无限极分类挺常用,递归的方式分类过多就会出现内存消耗过大的情况,所以使用了Nestedsets 嵌套结合完成分类。一、通过Composer 安装Nestedset插件到Yii 2.0 框架,使用这条命令“composer require creocoder/yii2-n...原创 2018-08-24 17:09:26 · 880 阅读 · 0 评论 -
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 · 10250 阅读 · 0 评论 -
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 · 1810 阅读 · 0 评论 -
MySQL 强大CASE WHEN 语法讲解
1,当前存在这样2张数据表,数据表关系是为,一对多:讲解1:通过平时的LEFT JOIN(左连接),得到的数据结果是这样:讲解2:通过发现数据返回不对,接下来通过CASE WHEN 语法完成:结果:因此就得到了这样每位同学对应的课程的成绩,是不是CASE WHEN 强大啊!...原创 2018-09-07 14:17:51 · 5206 阅读 · 0 评论 -
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 · 3141 阅读 · 0 评论 -
Swoole 毫秒和秒级定时器封装
引入官网的话:“使 PHP 开发人员可以编写高性能的异步并发 TCP、UDP、Unix Socket、HTTP,WebSocket 服务。Swoole 可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。 使用 PHP + Swoole 作为网络通信框架,可以使企业 IT 研发团队的效率大大提升,更加专注于开发创新产品。”首先我们来看下...原创 2019-01-07 11:36:10 · 660 阅读 · 0 评论 -
案例讲解$和$$,普通变量和引用变量之间的区别
引用变量和普通变量的区别,通过下面这个案例来告诉大家区别是什么。那我就不多说废话,进入正题。一,当前需求是如图的url ,我只想要根据参数名称获取其值:二,此时肯定有人会说 “ 通过foreach 遍历转换成二维数组来实现”,请接着往下看: 翻阅PHP手册,发现一个函数parse_url(解析url)。这样我们就能轻松实现我们的需求:轻轻松松就拿到了参数部分,如图所示:...原创 2019-01-07 15:42:39 · 2281 阅读 · 0 评论 -
php http_build_query 函数转换为url post data
一次面试编写支付验签接口,当时用http_build_query 转换参数的时候出现了+ 号。当时就很迷惑,后来没办法就很low B 的用foreach 进行拼接出的啦。一、这就是我当时很迷惑的地方,毕竟是支付接口不敢随便瞎整:发现没,出现了加号。因此我就不能再用这个函数进行处理二、通过php.net 手册,知道了原因:发现转换成功了,%20是代表空格的意思。总...原创 2019-01-19 12:07:14 · 528 阅读 · 0 评论 -
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 · 250 阅读 · 0 评论 -
SWOOLE 多进程消息系统
场景:适用于大部分消息队列场景,我列举几个常见地方:订单自动取消并归还库存,自动收货,群发邮件,推送微信消息模板,异步邮件发送,会员到期自动取消. . . . . 等等。一、我们开始看下这个消息端系统的实现流程。然后把业务逻辑写在Job类,分别两个方法 [ doJob => 自定义业务, after=> 业务后续操作] 二、Serve-Queue 详细讲解流程:...原创 2019-04-15 11:42:15 · 1149 阅读 · 0 评论 -
Swoole 实现Beanstalkd进程管理器
Jober 工作界面:产生背景:项目中经常会有后台运行任务的需求,比如发送邮件时,因为要连接邮件服务器,往往需要5-10秒甚至更长时间,如果能先给用户一个成功的提示信息,然后在后台慢慢处理发送邮件的操作,显然会有更好的用户体验。当然实际情况远不止这一点,我们可以通过Jober的配合完成 “订单超时关闭、自动评论、QQ邮箱定时发送功能等等”。Jober 是什么通过Swoole 官方提...原创 2019-05-18 20:28:56 · 386 阅读 · 0 评论 -
php语言中global 和 $_GLOBAL全局变量区别
阐述:使用PHP语言有一段时间了,突然今天看见某段代码中的global 变量。突然脑海中想到global 和 $GLOBALS区别是什么呢?1), global 变量名,示例代码如下:输出结果为:2), $GLOBALS 变量名,示例代码:输出结果为:总结:众所周知局部变量无法再函数外访问,可以使用GLOBALS['键名'] 实现成为全局变量进行访问。如果函数外部定义了变量,同样无法再内部访问,可...原创 2018-06-21 16:21:33 · 3799 阅读 · 2 评论