
php
10年老码农
10年IT从业经验,从事java、PHP后台、物联网开发工作。
展开
-
新接uni-push 2.0 云url化后,遇到duplicate message content
一开始我以为是官方防机器请求,所以有这个限制,所以我聪明的给它加上header里的各种头,结果还是一样。发现url后,有后端可查看请求日志,点进去发现我请求的中文怎么被编码了。首先,配下自己的云url,这个怎么配,去看官网文档,很详细。我同事见这样curl不够优雅,所以叫我换成 GuzzleHttp,好吧,换上确实能省不少代码。在接入的过程中,不是很顺利,现在把采坑点列出,并附解决方法。找到了问题点,那我们就得去改我们的请求入参了,在那个环节被编码过。如上图,确实也能请求成功,发送信息了。原创 2023-03-14 17:18:30 · 1629 阅读 · 2 评论 -
php 用gd库在图片上写文字,并处理文字糊模问题
今天有个需求,用php在一张图片上写文字。这个不是挺简单的嘛?我在一个test.php文件上,敲出6行代码,搞定img=imagecreatefrompng("C:\Users\Administrator\Desktop\a.png");$font='./static/img/SourceHanSansCN-Light.otf';$black = imagecolorallocate($img, 0, 0, 0);imagettftext($img,12,0,10,20,$black,$fo原创 2022-03-07 14:23:05 · 1217 阅读 · 0 评论 -
php 浮点型转成int类型,丢失精度问题的解决办法
这类问题,在支付代码段,常常遇到。上述是string的299.40,经过intval()后变成了29939了。肉眼看得见的数,在计算机中,存是这样的29939.99999999..解决办法有2个1.套层round()intval(round($p*100))2.先转成stringintval(strval($p*100))...原创 2022-03-05 17:03:18 · 777 阅读 · 0 评论 -
thinkphp 关联查询with生成的sql是怎么查看?
现在用thinkphp,基本用它的orm来做数据模型对象的关联。比如主表,子表的关系,用hasMany。用时一般是这样关联子表(item)这样用是方便,但在查询数据量大时,就很鸡肋,为什么呢?因为这样的关联查询生成的sql语句是用in方式。我特确查阅了官方文档,明确说明hasOne有join,in方式。用join时,要设置setEagerlyType(0)hasMany没有说明,但看它生成的sql是in。怎么查看它生成的sql呢?在项目的根目录下,...原创 2022-02-24 09:55:41 · 1133 阅读 · 0 评论 -
thinkphp5 命令行导出表格,速度会变快嘛?
php开发中,通过http响应生成的表格,在大数据量时,生成的表格是非常慢的。tp5.1中有个命令行,那通过命令行生成excel表格,是不是快点?所以遇到类似导出表格时,思路是这样:导出--命令行生成excel表格文件--下载文件--删除文件。但在用在生产前,得测试下。我的excel库是用 PHPExcel所以写了个例子1、命令行接收参数。2、$input接收参数,$output把参数返回给controller层3、controller层调用命令行,并传参。(注意原创 2022-02-06 15:31:06 · 572 阅读 · 0 评论 -
composer require 包时,指定版本
composer 如果不加版本上去,则默认是下载最新的版本。版本约束使用示例:和=都可以 版本约束可以加引号,也可以不加 composer官方文档使用的是:并且版本约束加引号示例代码:composer create-project topthink/think:"5.1.*"composer create-project topthink/think=5.1.*而指定版本的方法有几个:1.固定一个版本号composer require hyperf/valida...原创 2021-08-05 23:46:33 · 8680 阅读 · 0 评论 -
传统php fpm的工作方式
(本文本摘自hyperf)原创 2021-07-17 23:34:06 · 158 阅读 · 2 评论 -
php 的array_diff,array_intersect,array_merge, in_array 里的数组,有数量限制嘛?
1、首先我建10W数据的表。2、用tp里的方法,取出列进行 array_diff,array_intersect,array_merge均可计算正常输出,且是毫秒级响应。(以下图是正常计算出结果)(以下图是级秒级响应,当然你也可测这代码的耗时,我时间少,就不测了)...原创 2021-03-03 00:12:27 · 273 阅读 · 0 评论 -
微信退款用证书文件apiclient_cert.pem 放在哪个目录?怎么用?
很多新手在对接微信退款时,会碰到401错误。因为微信退款会用到证书,而接口文档中,是没有详细的说明,证书是怎么用,放在哪个目录?刚开始,我也查了很多久。现在我贴代码出来,技术人员一看便知。1、存放任意,你的系统可以读的目录。2、在发起curl请求时,设置这个ssl。配上了这个,发起退款成功其他的退款逻辑,则自己查微信的官方文档了。...原创 2021-02-19 21:42:00 · 5566 阅读 · 0 评论 -
PHP7开启opcache打造强悍性能
鸟哥在博客中说,提高PHP 7性能的几个tips,第一条就是开启opcache:记得启用Zend Opcache, 因为PHP7即使不启用Opcache速度也比PHP-5.6启用了Opcache快,所以之前测试时期就发生了有人一直没有启用Opcache的事情那么什么是Opcache呢?Opcache 的前生是Optimizer+,它是PHP的官方公司 Zend 开发的一款闭源但可以免费使用的 PHP 优化加速组件。 Optimizer+ 将PHP代码预编译生成的脚本文件Opcode...原创 2021-01-26 10:59:04 · 1075 阅读 · 0 评论 -
thinkphp使用paginate()分页后给结果集追加字段或数据
thinkphp使用分页类paginate后,怎么增加字段?有两种办法:1、使用paginate对象的each方法,传入回调,在回调函里写(本方法参考网上)。public function index(){ $pagenum = 20;//默认分页条数 //查询数据 $salesOrderPrepareModel = new salesOrderPrepareModel(); $list = $salesOrderPrepareModel->pa原创 2021-01-26 10:49:25 · 2778 阅读 · 0 评论 -
PHP压缩文件下载,提示压缩包损坏及打不开的解决方法
今天正常的导压缩文件,发现一个问题,当数量据大点时,比如我的表有25万个字时,就提示我解压失败后来我慢慢排查,我放删除临时文件的代码注释掉,让程序生成临时文件。发现,临时文件只有65kb,且是可以解压力成功的。(浏览器下载同一个zip包有211kb)后来我又百度许久,网上都说需要加ob_clean();flush();以便把缓存区的数据,制刷到浏览器,但我代码里也加了后来我去百度了下php的缓存机制(以下这段,摘至网上)buffer是一个内存地址空间,Linux系原创 2021-01-24 23:23:58 · 1607 阅读 · 0 评论 -
composer require 某软件安装指定版本
1、各版本号的意思。#最新版 * # 大于等于1.0的最高版本 >=1.0#大于等于1.0且小于2.0的最高版本 >=1.0 <2.0#1.0至2.0之间的最高版本 1.0 - 2.0#>=1.0且<1.1的最高版本 1.0.* #>=1.2且<2.0的最高版本 ~1.2 #>=1.2.3且<1.3.0最高版本 ~1.2.3#>=1.2.3且<2.0.0的最高版本^1.2.32、安装什么样的包?开发版的原创 2021-01-04 23:46:09 · 4635 阅读 · 0 评论 -
PHP中接收post过来的JSON raw 数据
1、因为php只认得application/x-www.form-urlencoded标准的数据类型,因此,对型如text/xml或者 soap 或者 application/octet-stream之类的内容无法解析,如果用$_POST数组来接收就会失败!故保留原型,交给$GLOBALS['HTTP_RAW_POST_DATA']来接收。2、但$GLOBALS['HTTP_RAW_POST_DATA']在,PHP7中将废弃。所以官方推荐file_get_contents('php://input')接原创 2020-10-12 23:24:08 · 3116 阅读 · 0 评论 -
php 同一个数组两个foreach 得到莫名奇怪的结果
今天要实现的功能:取出菜单并判断用户是否已经选中这个菜单,同时还要给菜单归类。这样的代码看起来没什么问题。当然是我修正后的。修正前,第二次foreach的变理,也是$m,结果得出来的数组,最后一个元素,总是与倒数第二个相同。后面打印数组,慢慢排查,才发现第二次foreach用的$m,与第一次的foreach相同了,数据被污染了。...原创 2020-09-25 16:31:01 · 396 阅读 · 0 评论 -
使用swoole 怎么把http 请求转成消息,推到tcp里,web控制物联网硬件。
两种文案。1、使用easyswoole,具体请到其官网看文档。 ServerManager::getInstance()->getSwooleServer()2、swoole开一个websocket主服务,再加一个tcp子服务。详情看swoole的文档。本人测试如下:如有不懂,可私聊我。...原创 2020-05-02 05:33:27 · 758 阅读 · 0 评论 -
阿里大于能拿得到短信的回复值嘛?
首先,答案是能。但它只有从列表里取出回复的内容,并不能与发送短信时的关联起来(文档里没有这个关联id)。但我们可以利用阿里队列的特性,回调返回true,即可删除队列里的回复,那么用户回复后永远是最新的。如下例子,我就拿到了。...原创 2020-04-29 18:51:00 · 223 阅读 · 0 评论 -
PHP过滤各种html标签
1.strip_tags(剥去字符串中的 HTML 标签)strip_tags() 函数剥去字符串中的 HTML、XML 以及 PHP 的标签。2.字符串替换str_replace(array(" ","&nbsp;","\t","\r\n","\r","\n"),array("","","","","","")3.利用正则表达式(效率...原创 2019-09-28 12:37:15 · 615 阅读 · 0 评论 -
composer安装和卸载各种插件(转)
1、进入composer环境,并用命令行cd进入php项目的根目录2、修改项目根目录下的composer.json文件,如果是增加插件,就写入插件,如果是卸载插件,就把composer.json里所配置的相应的 插件删除。3、运行composer update命令,就可以安装或者卸载插件。...原创 2019-09-25 16:39:15 · 1518 阅读 · 0 评论 -
PHP获取今天、昨天、明天的日期
<?phpecho "今天:".date("Y-m-d")."<br>"; echo "昨天:".date("Y-m-d",strtotime("-1 day")), "<br>"; echo "明天:".date("Y-m-d",strtotime("+1 day")). "<br>"; echo "一周后:".date("Y...转载 2019-05-22 18:58:19 · 381 阅读 · 0 评论 -
Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
以下文件转自网上,特些声明。一段PHP程序执行报错:Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)去百度了一下,原来是php.ini中的内存分配的问题,默认php代码能够申请到的最大内存字节数就是134217728 bytes,如果代码执行的...转载 2019-04-26 10:47:23 · 8097 阅读 · 0 评论 -
PHP 高精度数字 float加减乘除
如果用php的+-*/计算浮点数的时候,可能会遇到一些计算结果错误的问题,比如echo intval( 0.58*100 );会打印57,而不是58这个其实是计算机底层二进制无法精确表示浮点数的一个bug,是跨语言的可以用精度函数库解决问题 bcadd — 将两个高精度数字相加 bccomp — 比较两个高精度数字,返回-1, 0, 1 bcdiv — 将两个高精...转载 2018-12-05 17:14:23 · 1065 阅读 · 0 评论 -
centos7 php56重新安装gd库
这边提供安装php5.6的yum方法扩展自选。运行下列命令# rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm yum ...原创 2018-11-12 16:02:54 · 1790 阅读 · 0 评论 -
thinkphp5去除index.php的几大方式,根治各种不行
在tp5中官方给出的去隐藏index.php方法如下:[ Apache ]httpd.conf配置文件中加载了mod_rewrite.so模块AllowOverride None 将None改为 All把下面的内容保存为.htaccess文件放到应用入口文件的同级目录下<IfModule mod_rewrite.c> Options +FollowSymlinks -Multivi...原创 2018-06-12 12:36:49 · 14982 阅读 · 4 评论 -
php各个版本的区别
PHP5.2 以前:autoload, PDO 和 MySQLi, 类型约束PHP5.2:JSON 支持PHP5.3:弃用的功能,匿名函数,新增魔术方法,命名空间,后期静态绑定,Heredoc 和 Nowdoc, const, 三元运算符,PharPHP5.4:Short Open Tag, 数组简写形式,Traits, 内置 Web 服务器,细节修改PHP5.5:yield, list() 用于...转载 2018-04-09 18:41:37 · 2028 阅读 · 0 评论 -
php版本几支持 ::class这种写法
自 PHP 5.5 起,关键词 class 也可用于类名的解析。使用 ClassName::class 你可以获取一个字符串,包含了类 ClassName 的完全限定名称。这对使用了 命名空间 的类尤其有用。...原创 2018-04-09 17:46:55 · 4946 阅读 · 0 评论 -
php nulink文件问题小结
这个是编写 unlink 函数的那个 C 程序员逻辑上的问题。无论 / 还是 ./ 最终都要转换成本地的绝对路径。如,是 windows 系统,要转成 D:\wamp\www\1.jpg 这样的路径。是 Linux 转成 /var/www/1.jpg。/school...,这样的表达,unlink 会误将 / 理解成根路径,从而变成 D:\school\...或/school/...。如果你不习惯...转载 2018-03-27 10:46:33 · 430 阅读 · 0 评论 -
THINKPHP 防止重复提交表单 自己实现token
首先在项目function.php 定义几个方法。//创建TOKENfunction creatToken() { $code = chr(mt_rand(0xB0, 0xF7)) . chr(mt_rand(0xA1, 0xFE)) . chr(mt_rand(0xB0, 0xF7)) . chr(mt_rand(0xA1, 0xFE)) . chr(mt_rand(0xB0,转载 2017-12-20 18:59:02 · 2042 阅读 · 0 评论 -
phpstorm 配置Xdebug进行调试PHP教程
运行环境:PHPSTORM版本 : 8.0.1PHP版本 : 5.6.2xdebug版本:php_xdebug-2.2.5-5.6-vc11-x86_64.dllps : php版本和xdebug版本一定要相对应1. PHP安装xdebug扩展 php.ini的配置,下面的配置仅供参考,路径要换成自己的![xdebug]zend_extension=”D:\wamp转载 2017-10-29 23:13:51 · 9325 阅读 · 0 评论 -
could not open input file linux 编写 shell遇到了小问题
对于linux新人来说,这个问题是天大的。但最后还是被我的耐心给解决掉了。是这样的今天学习秒杀知识点,其中需要用到定进任务,所以我就启动了一年前装好的虚拟机。对于linux,本人还是有点基础知的。于是信心满满的把在windows平台上写好的PHP文件上传到linux。跑了起来,结果呢,老是出现 could not open input file 。于是乎按在windows平台上的思维,原创 2017-10-28 17:47:47 · 12668 阅读 · 1 评论 -
PHP APC缓存配置、使用详解
一、APC缓存简介APC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”。它为我们提供了缓存和优化PHP的中间代码的框架。 APC的缓存分两部分:系统缓存和用户数据缓存。系统缓存它是指APC把PHP文件源码的编译结果缓存起来,然后在每次调用时先对比时间标记。如果未过期,则使用缓存的中间代码运行。默认缓存 3600s(一小时)。但是这样转载 2017-09-29 17:55:48 · 490 阅读 · 0 评论 -
php array_diff array_intersect用法
//array_diff(array1,array2,array3...);//返回差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2 或 array3 等等)中的键值。//也就是只返回组数1中的差集$a1=array(1,2,3,4,5,6,7,10);$a2=array(4,5,6,7,8,9);$a3=array(4,5,6,7,11原创 2017-09-20 18:03:01 · 1067 阅读 · 0 评论 -
商品表中为什么要同时上传不规格的图片?
有以下几个原因:1、一般商城追求性能,在不同的位置(商品大图,列表缩略图)会使用不同规格的图片,这样做可减少宽带,提高网页速度。添加什么样的缩略图?这个可根据前台业务需求来定制。原创 2017-06-07 21:53:41 · 448 阅读 · 0 评论 -
php代码优化方法,加速运行速度的技巧总结
1. 尽量采用大量的PHP内置函数。2. echo 比 print 快。3. 不要把方法细分得过多,仔细想想你真正打算重用的是哪些代码?4. 在执行for循环之前确定最大循环数,不要每循环一次都计算最大值。5. 注销那些不用的变量尤其是大数组,以便释放内存。6. 并非要用类实现所有的数据结构,数组也很有用。7. $row['id']的效率是$row[id]的7倍。8.转载 2016-10-27 23:47:52 · 6817 阅读 · 0 评论