php
文章平均质量分 97
七个包
这个作者很懒,什么都没留下…
展开
-
php获取m3u8后缀的视频时长
//解析m3u8文件,获取视频总时长private function getDuration($uri){ try{ $res = file_get_contents($uri); }catch(\ErrorException $e){ return 0; } preg_match_all('/\d+[.]\d+/',$res,$arr); $res = array_sum($arr[0]); return (int)$re.原创 2020-05-11 11:53:28 · 2851 阅读 · 0 评论 -
php 多进程通讯-消息队列
需要扩展:sysvmsgsysvsemsysvshm1.php<?php//指定队列的key 相当与队列的名字,也可以这么建 ftok(__FILE__,'a');$queue_key = '1111111111111';//创建一个消息队列$queue = msg_get_queue($queue_key);/** * 接收消息,这个是阻塞的,接收到消息才...原创 2020-02-05 15:45:42 · 189 阅读 · 0 评论 -
php 多进程热重启
<?phpclass test{ private $son_num = 4; private $son_list = []; public function start() { for($i = 0;$i < $this->son_num;$i++){ $this->fork(); ...原创 2020-01-31 19:16:27 · 373 阅读 · 0 评论 -
版本转换
转换版本号,最高支持到99.99.99.99,够用了function version_decode($version){ $n1 = $version%1000000; $n2 = $n1%10000; $n3 = $n2%100; return intval($version/1000000).'.'.intval($n1/10000).'.'.intval($n...原创 2019-12-23 14:46:23 · 107 阅读 · 0 评论 -
swoole 对tcp粘包处理
1,在短时间内数据发送过快时,会发生粘包现象,比如下面的代码,这个现象是双向的,客户端,服务端均可能出现此问题 下面只是以客户端 to 服务端举例server.php<?php$host = '0.0.0.0';//创建Server对象,监听 127.0.0.1:9501端口$serv = new Swoole\Server($host, 9501);//监听数...原创 2019-12-16 22:24:05 · 392 阅读 · 0 评论 -
centos7 shell脚本一键安装php环境全家桶
一键安装的脚本在最下面,复制代码就能用,不着急的建议慢慢看,欢迎路过的朋友指点1,yum install php 默认安装的是5.4几版本的php,后面的updates不知道干啥的,望路过的大神指点2,因为yum 安装软件有两个软件源(目前我只知道俩,貌似还有个ius?) 1),epel 安装软件默认就是走这个源,php,redis不是最新的 2),rem......原创 2019-12-02 00:23:34 · 2787 阅读 · 5 评论 -
laravel-admin 的 表单允许字段为空小改
laravel 版本 6.5.2laravel-admin 版本 1.5laravel-admin 的如果想要某个字段不填就提交的话,官方文档上是这么写的但是,有些字段就是选填的啊,也不想把数据库对应的字段设置为null,查的时候麻烦,下面小改一下1,我这里对应的是这个资源控制器$router->resource('resources', ResourceCo...原创 2019-11-28 23:17:19 · 1825 阅读 · 0 评论 -
laravel-admin 的 between()->datetime();
laravel 版本 6.5.2laravel-admin 版本 1.5下面是laravel-admin 的一个筛选组件datetime,第一个选项可以格式化组件样式,比如只筛选年,或者月啥的,第二个参数是我自己加的$grid->filter(function ($filter) { $filter->disableIdFilter(); $filt...原创 2019-11-28 22:55:15 · 3314 阅读 · 2 评论 -
php 安装redis扩展(mac 下)
转自https://www.cnblogs.com/gauze/p/8877198.html非常感谢! 下载php-redis,地址:https://nodeload.github.com/nicolasff/phpredis/zip/master 解压:tar -zxvf phpredis-master.zip(也可以用别的什么解压,这个随意) 进入目录:cdph...转载 2019-11-26 15:38:52 · 481 阅读 · 0 评论 -
记一些非常好用的函数之字符串
strtr()转换指定字符$s = "我是一只#name#,我喜欢#like#";$res = strtr($s,['#name#'=>'小鸭子','#like#'=>'游泳']);//我是一只小鸭子,我喜欢游泳原创 2019-11-18 20:52:15 · 111 阅读 · 0 评论 -
让php项目支持.env配置文件
加入下面这段代码就可以了,翻thinkphp3的源码翻到的//把这个放到项目的入口文件里if (is_file('./.env')) { $env = parse_ini_file('./.env', true); //解析env文件,name = PHP_KEY foreach ($env as $key => $val) { $name = ...原创 2019-11-18 14:40:01 · 5599 阅读 · 0 评论 -
关于中间件中使用的管道机制
如果想在一个控制器方法中,添加前置和后置操作,可以借鉴直接看代码<?phpclass a{ public static function hander(Closure $fun){ echo "前置 ----- a\n"; $fun(); echo "后置 ----- a\n"; }}...原创 2019-11-17 18:14:30 · 320 阅读 · 0 评论 -
php ArrayAccess 类
提供像访问数组一样访问对象的能力的接口。很神奇的接口,看代码手册地址https://www.php.net/manual/zh/class.arrayaccess.php<?phpclass aa implements \ArrayAccess{ public function offsetExists($key) { return '11...原创 2019-11-11 17:10:24 · 179 阅读 · 0 评论 -
laravel 解析 bootstrap/app.php 中绑定服务容器的一种方式
在laravel中,想要把服务绑定到容器一般是用下面的方法,在服务提供者中,常见类似的写法,第一个参数传标识,第二个参数传闭包但是在 bootstrap/app.php 中有三行代码是这么写的,第一个参数传了一个契约(接口),第二个参数传了一个具体类问:为什么要这么写呢? 答:为了在依赖注入时,实现解耦举个例子:如果需要在控制器中调用自己写的工具类,比如处理字符串的,如何调...原创 2019-10-31 15:27:30 · 854 阅读 · 2 评论 -
laravel 创建服务
比如要创建一些自定义工具的服务类,下面的文件夹名称和文件名称都是自定义的,根据自己需求来1,在 app 文件夹下创建一个Tools文件夹2,在Tools创建一个用来处理字符串的工具类 StringTools,如下图3,在 app/Providers/AppServiceProvider.php 文件的register方法中注册就可以了,如下图4,在控制器中,可以通过app助...原创 2019-10-31 12:01:00 · 1364 阅读 · 0 评论 -
laravel 的核心设计思想之契约
契约契约是对laravel服务(组件)的一种规则,约束具体是怎么约束的呢?在vendor/laravel/framework/src/Illuminate/Contracts 目录下,有对应服务的文件夹,里面是一组接口文件接口文件中定义了对应的服务需要什么方法,传入什么样的参数在服务类提供服务的时候,要实现这些接口为什么要用接口当做契约,而不是用抽象类呢?契约...原创 2019-10-30 18:08:21 · 209 阅读 · 0 评论 -
laravel 的核心设计思想之门面
门面个人理解就是方便调用服务(组件)的一种方式官方叫Facades,翻译过来就是门面,感觉这个词不太合适,但是好像又没有其他更合适的叫法举个例子在注册路由的时候,是这么写的Route::get('/',function(){ echo 'hello';});实际上,上面的写法是对下面这种写法的简化,为了优雅~,不知道下面代码啥意思的看这里app('rout...原创 2019-10-30 14:23:40 · 576 阅读 · 0 评论 -
laravel 的核心设计思想之服务容器
服务容器就是普通的ioc容器,因为是用来管理服务(组件)的,所以叫服务容器这个服务容器在哪?容器类的具体路径 vendor/laravel/framework/src/Illuminate/Container/Container.php如何把服务绑定到这个容器?容器类有个 bind 方法,可以把服务绑定到容器类的 bindings 属性,这是个大数组容器类中还有个sin...原创 2019-10-30 12:05:46 · 237 阅读 · 0 评论 -
laravel 的核心设计思想之服务提供者
服务提供者服务提供者,服务提供器都是指一个东西:把服务提供给laravel的服务容器的类每个服务提供者都会继承 Illuminate\Support\ServiceProvider 抽象类,在register方法中,注册服务对象实例到服务容器那么什么是服务呢?服务就是laravel中的组件,也叫服务组件.是可以拆分出去使用的功能.和从composer的库中引入一样在lara...原创 2019-10-30 11:38:30 · 264 阅读 · 0 评论 -
php 项目架构演变史
混编->mvc->分层->组件混编html和php代码混合编程,html代码中插入大量的php原生代码mvc随着业务变的越来越复杂,控制器和模型会越来越大,文件会越来越多,越来越多,相应的职责也越来越多分层欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章...原创 2019-10-29 18:32:25 · 656 阅读 · 0 评论 -
php AOP(面向切面)
感谢这两篇文章:https://www.cnblogs.com/xpbb/p/3282829.htmlhttps://www.cnblogs.com/baochuan/archive/2012/08/22/2644529.htmlAOP为Aspect Oriented Programming的缩写,意为:面向切面编程(也叫面向方面),可以通过预编译方式和运行期动态代理实现在不修改源代码...转载 2019-10-26 19:04:37 · 1237 阅读 · 0 评论 -
记一些非常好用的函数
call_user_func_array调用回调函数,并把一个数组参数作为回调函数的参数1,第一种用法public function sd($a,$b,$c){ return "{$a}-----{$b}---{$c}\n";}$re = call_user_func_array('sd',['aaa','bbb','sss']);echo $re;//结果:aaa...原创 2019-10-26 18:40:09 · 195 阅读 · 0 评论 -
php 控制翻转
感谢!https://www.cnblogs.com/liluxiang/p/9500923.html控制翻转就是对依赖对象的创建控制权,交给了容器<?phpinterface Message{ public function send();}class Money{ public function spend(){ echo "扣除一毛...原创 2019-10-27 07:14:11 · 137 阅读 · 0 评论 -
php 依赖注入
<?php//比如说有个发送短信的需求,有两家服务,一家阿里,一家腾讯//都是得发短信,先写个抽象类abstract class SendSms{ abstract public function send($sms);}//阿里的服务封装class Al extends SendSms{//这里还有些引入阿里云的sdk,配置项的操作...,下面的腾讯类一样...原创 2019-10-25 15:34:17 · 217 阅读 · 0 评论 -
laravel 访问public,resource,storage目录下的文件
1,创建一个用来访问文件的路由,例如在 routes/web.phpRoute::get("storage/{file_name}","FileController@browse");2,在对应的控制器方法中返回文件class FileController extends Controller{ function browse($file_name){ ...原创 2019-10-21 17:55:02 · 13167 阅读 · 0 评论 -
php 批量获取第三方图片,并压缩输出下载
解决方案//需要下载的第三方图片链接数组$img_list = [ 'http://img.mp.sohu.com/upload/20170710/18931bc763024d7cbd105e1b46804446.png', 'http://img5.imgtn.bdimg.com/it/u=1289981276,3794620975&fm=15&gp=0....转载 2019-10-18 11:28:32 · 828 阅读 · 0 评论 -
thinkphp5引用阿里云日志服务sdk
1,下载阿里云日志sdk,地址2,下载完成后,把文件夹改个名字(因为原文件夹名字太长了-_-|),比如aliyun_log,并放到vendor目录下3,用tp的vendor函数引入,然后按照阿里云给的例子写就行了4,阿里云原文地址,地址...原创 2018-12-20 21:58:05 · 2837 阅读 · 0 评论 -
php_network_getaddresses: getaddrinfo failed: Name or service not known
1,项目是用的阿里云数据库,链接是一长串的字符串,类似下面这样的rr-sdf23djgkjhw2345.mysql.rds.aliyuncs.com2,如果报上面的错误,先ping 一下这个地址,如果能ping 通,会得到一个ip地址3,用ip地址替换掉字符串,搞定4,原因: 1),这个字符串会被PHP解析成ip地址(redis 的字符串地址也会被解析成ip地址) ...原创 2018-12-14 19:14:17 · 30820 阅读 · 10 评论 -
php 删除文件夹下所有文件
删除当前目录下/data/ 文件夹下所有的文件array_map('unlink',glob('./data/*'));原文:https://www.jb51.net/article/132620.htm谢谢转载 2018-12-06 15:32:59 · 438 阅读 · 0 评论 -
centos7 PHP 安装PHP环境及mysqli 扩展
推荐自己的另一篇博客:centos7 使用shell脚本一键安装php环境全家桶centos7 安装PHP环境,好使1、由于linux的yum源不存在php7.x,所以我们要更改yum源: 1 2 #rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch....转载 2018-11-27 23:00:26 · 7332 阅读 · 4 评论 -
php file_put_contents 和 fwrite
1,file_put_contents写入效率比fwrite效率慢很多2,一百万次写入,file_put_contents需要半个小时左右3,fwrite只需要12秒4,猜测是因为file_put_contents有打开和关闭文件的过程...原创 2018-11-27 15:28:57 · 609 阅读 · 0 评论 -
php 存json字符串到mysql 反斜杠丢失的问题
1,从接口返回的数据2,执行insert into语句插入后,存的数据变成了这样,反斜杠"\"没了,用json_decode的时候就会返回null了3,在插入的时候,对json字符串加个方法,addslashes()4,搞定,参考https://blog.csdn.net/yang9315/article/details/81044897,多谢...转载 2018-11-26 17:25:37 · 3061 阅读 · 0 评论 -
form存换行和空格符
1,form构建出的字段输入框用富文本$form->editor($column[, $label]); 2,如果$form->editor($column[, $label]);不起作用,参考http://laravel-admin.org/docs/#/zh/model-form-field-management?id=%E6%89%A9%E5%B1%95%E8%87%AA%E...原创 2018-11-08 19:39:03 · 1631 阅读 · 0 评论 -
thinkphp3 上传图片到阿里云
thinkphp3 上传图片到阿里云1,下载阿里云sdk,点击这里2,解压zip文件,并把解压的文件夹放到thinkphp的ThinkPHP/Library/Vendor/目录下(AlySdk名字是自己重命名的,改成啥都行,就是解压出来的那个文件夹)3,在接收文件的方法里,先检测有没有接收到文件empty($_FILES),如果有,则调用thinkphp Upload类 ...原创 2018-11-08 18:49:18 · 235 阅读 · 0 评论 -
centos7 php-redis扩展
亲测,好用,多谢https://www.cnblogs.com/cnbing/p/7074860.html又找到一个方法,不知道管不管用,待试,原地址,多谢!转载 2018-12-26 22:00:26 · 145 阅读 · 0 评论 -
解决thinkphp5.1 的跨域问题的一次经历
1,环境:ngxin+thinkphp5.12,问题:使用ajax请求时报错has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the re...原创 2019-08-30 11:33:12 · 3215 阅读 · 0 评论 -
mac 安装最新版本的php
1,安装brew,点我跳到官网2,用brew安装php brew install php3,编辑环境变量 vim ~/.bash_profile 新增一条 alias php="/usr/local/opt/php/bin/php" (注意:引号里的路径有可能不一样,一般是上面那个)4,使刚才编辑的环境变量生效 sourc...原创 2019-08-27 14:39:18 · 481 阅读 · 0 评论 -
php读取表格文件
1,这是用到的composer包,地址:https://packagist.org/packages/phpoffice/phpspreadsheet,非常感谢!2,参考https://www.php.cn/php-weizijiaocheng-414095.html,非常感谢!3,封装好的方法/** * 获取表格中的数据 * * @param stri...转载 2019-07-25 10:33:01 · 352 阅读 · 0 评论 -
php 图片裁剪
前端1,用到的插件jcrop,可以下载到本地,也可以用这个cdn2,例子页面添加代码<img src="" alt="" name="target" id="target" style="max-height:230px;position:absolute;right:50px"><input type="hidden" name="preview_img...原创 2019-06-03 18:39:23 · 286 阅读 · 0 评论 -
windows xampp 安装phpunit实验
*需要全局composer*需要全局php1,新建文件夹(例如testdemo),命令行cd到此文件夹下2,命令行输入composer init,如下图,需要输入几次yes,完成后会生成一个composer.json文件3,命令行输入composer install,如下图,会生成一个vendor文件夹,里面有个autoload.php文件4,引入phpunit依赖包,...原创 2018-11-09 17:45:06 · 255 阅读 · 0 评论