分类 PHP 下的文章

php解析获取word内容-phpword

**phpword试用说明,php解析word内容,php读取word内容,php获取word内容方法** ```php namespace app\controller; use app\BaseController; class Index extends BaseController { public function index(){ echo ' '; } public function wordtohtml(){ $file = request()->file('file'); $ext_name = strtolower(pathinfo($file->getOriginalNa...

继续阅读 »

钉钉注册回调常见问题解决_PHP环境

**基于官方开放平台提供的PHP Demo进行钉钉业务事件回调接口注册时常见问题及解决:** **1、注册业务事件回调接口请求参数配置说明** ```php call_back_tag:需要监听的事件类型,如:["bpms_task_change", "bpms_instance_change"] token:加解密需要用到的token,自定义 aes_key:数据加密密钥。用于回调数据的加密,长度固定为43个字符,从a-z, A-Z, 0-9共62个字符中选取,可以随机生成 url:接收事件回调的url,必须是公网可以访问的url地址 ``` **2、接收事件回调的url页面加解密配置说明-测试回调URL** ```php //企业内部应用开发可以忽略该项 define("CR...

继续阅读 »

tp6 GatewayWorker IM

##### thinkphp6使用gatewayworker开发IM,thinkphp6使用Workerman gateway_worker实现IM. ####说明: `1、本文调试基于centos、lnmp开发环境。` `2、thinkphp6多应用模式` `3、配置文件、事件回调文件更改后需要重启worker服务才会生效` ## 一、基础:了解GatewayWorker > GatewayWorker基于Workerman开发的一个项目框架,用于快速开发TCP长连接应用,例如app推送服务端、即时IM服务端、游戏服务端、物联网、智能家居等等 > GatewayWorker使用经典的Gateway和Worker进程模型。Gateway进程负责维持客户端连接,并转发客户端的数据给...

继续阅读 »

使用fastcgi_finish_request实现异步操作提高页面响应速度

当PHP运行在FastCGI模式时,PHP FPM提供了一个名为fastcgi_finish_request()的函数方法。 按照文档上的说法,此方法可以提高请求的处理速度,如果有些处理可以在页面生成完后再进行,就可以使用这个方法。如: **1、**用户注册后的短信发送 或 邮件发送 **2、**局部代码延迟执行 **3、**运行日志记录 等一些耗时操作可以转化为异步操作,示例: ```php header('Content-Type:application/json; charset=utf-8'); $result = []; $result = [ 'code' => 200, 'msg' => 'Success', 'data' => '页面输出展示的内容(用户可以看...

继续阅读 »

curl无输出_返回空白_返回77问题解决

最近php7.2.6实例下web业务curl突然无法正常使用或偶尔可用。经排查发现CURL请求时会抛出如下两类错误: - curl Problem with the SSL CA cert (path? access rights?) - 77 CURLE_SSL_CACERT_BADFILE 错误码 参考本站另外一篇文章《[PHP curl函数_解决curl返回空白问题](https://www.fity.cn/post/594.html "PHP curl函数_解决curl返回空白问题")》仍无法解决问题 ```json curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//禁止 cURL 验证对等证书 curl_setopt($ch,...

继续阅读 »

计算两个经纬度的距离/偏差米数_计算周边范围经纬度值

**计算两个经纬度的距离/偏差米数_计算周边范围经纬度值_PHP函数笔记** 计算经纬度距离,首先需要了解球面距离计算公示: ```php r*arccos(cos(lat1*pi()/180 )*cos(lat2*pi()/180)*cos(lng1*pi()/180 -lng2*pi()/180)+ sin(lat1*pi()/180 )*sin(lat2*pi()/180))r*arccos(cos(lat1*pi()/180 )*cos(lat2*pi()/180)*cos(lng1*pi()/180 -lng2*pi()/180)+ sin(lat1*pi()/180 )*sin(lat2*pi()/180)) ``` 其中,lat1,lng1是纬度\经度的弧度单位,r为地球半径。...

继续阅读 »

PHP Javabridge使用

##### 一、php如何调取java方法: php调用java的方法有Javabridge,也有rpc。php里调用java平台封装好的jar包里的class类和方法推荐使用php-java-bridge做桥接。 ##### 二、Javabridge工作原理: 通过服务端打开一个java的监听端口,php调用java时,将对应的方法调用转发给java的指定端口,由java执行完成后将结果返回给php。可以简单的理解php在这里扮演的角色是代理转发,把调用的类方法转交给后端java执行,是一种较为典型的代理模式。 ##### 三、使用步骤: **1、**服务端部署Apache/Nginx+PHP+JDK+Tomcat **2、**下载本文附件[Javabridge](https://w...

继续阅读 »

PHP一个数组按另一个数组顺序排序

##### PHP实现将一个数组按另一个数组顺序进行排序,PHP根据一个数组对另一个数组进行排序 ##### 顺序约束数据(20条): ```php $sort_list = array(20) { [0] => int(30702) [1] => int(30373) [2] => int(32110) [3] => int(32207) [4] => int(31923) [5] => int(1497) [6] => int(32003) [7] => int(30397) [8] => int(32086) [9] => int(31920) [10] => int(30795) [11] => int(3192...

继续阅读 »

php openssl_encrypt无填充注意点

**php openssl_encrypt OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING无填充加密失败或空白无输出问题:** 在ios/java(Android)加密选择无填充模式如果不足128字节的话,调用方法会自动填充至128字节再进行加密,但php跟java中没有统一的填充标准,所以openssl_encrypt并没有默认填充,openssl_encrypt加密对数据长度有要求(这个与钥模有关),从而导致加密失败,这就需要手动填充。可以使用php函数str_pad函数。

继续阅读 »

PHP7 AES加密解密函数_兼容ios/andriod/java对等加解密

**PHP7.0 7.1 7.2 7.3 AES对等加解密类 函数文件_兼容ios/andriod/java等** 由于新项目规划要求使用PHP7.2开发环境,但在部分新系统中仍需使用AES加解密方式交互调取早期系统数据,由于早期AES使用的是mcrypt_encrypt函数,但该函数在PHP新版本中已逐渐废弃,PHP新版本中使用openssl_encrypt取代mcrypt_encrypt。 于是重新基于PHP7编写一个新类,由于需兼容现有早期系统的AES加解密类(并存填充与无填充),所以该类中增添部分判断。在规划项目、技术及开发时,未来往事推荐你尽可能规范化、标准化、统一化,以尽可能规避持续的维护投入,提升有效开发时间。 **AES对等加密解密类文件:CBC模式 - PHP** `...

继续阅读 »

微信access_token说明及多业务统一调用方案

**普通access_token:** access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。 参考出处: https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html **关于网页授权access_token和普通access_token的区别** **1、**微信网页授权是通过OAuth2.0机制实现的,在用户授权给公众号后...

继续阅读 »

tp_thinkphp_php检测上传图片中是否含脚本

#### 本文范例中是基于检测图片十六进制代码中是否包含``、`` 、``等脚本实现检测上传文件是否非法及包含木马脚本。 ```php class Upload { private static $image = null; private static $status = 0; private static $suffix = null; private static $imageType = array('.jpg', '.bmp','.gif','.png');  //允许的图片类型 private static $message = array(  //文件上传错误信息 '0' => '没有错误发生...

继续阅读 »

TP5 save遍历更新,过滤相邻重复字段,问题汇总

  TP5中在model中使用save方法遍历更新字段,会自动过滤掉相邻且值重复的字段,在TP5开发手册中也没有提到这一茬,虽然官方有给遍历更新的例子,但是普通的写法程序也不会报错,可能几千条数据中会过滤一两个字段,让开发者很难察觉到错误。而且也实在想不通过滤掉重复的字段的意义在哪里,测试内容如下: 测试准备工作如下: 1.建立一张数据表如下 ![](http://images2015.cnblogs.com/blog/1001334/201706/1001334-20170614004111743-584515005.png) 2.控制器代码如下:     public function save(){ $model = model('Foo');...

继续阅读 »

PHP垃圾回收与内存管理基本原理

##### 内存管理机制了解: >var_dump(memory_get_usage());//获取内存方法,加上true返回实际内存,不加则返回表现内存 $a = "https://www.fity.cn"; var_dump(memory_get_usage()); unset($a); var_dump(memory_get_usage()); 输出: int 368752 int 368920 int 368752 可以直观的看出定义变量之后,内存增加,清除变量之后,内存恢复(有些可能不会恢复和以前一样),好像定义变量时申请了一次内存,其实不是这样的,php会预先申请一块内存,不会每次定义变量就申请内存。PHP不像C语言那样,只有你显示的调用内存分配相关API才会有内存的分...

继续阅读 »

html无损截取_保留html标签

```php /** * 字符串切割 * 功能:截取字符串(支持中文),如果字符串中包括html标签,截取的字符串则会保留完整的html标签 * @param string $string 输入字符串 * @param unknown $length 截取长度 * @param bool $mode 截取模式:0删去html标记(默认),1补齐html标记 * @param string $replace * @return string * @author 未来往事 * 说明: * 1.未考虑多字节字符,仅已字节做计数单位 * 2.未考虑可单独存在的标记 */ function html_substr($string, $length, $mode=0, $o...

继续阅读 »