
php
来自新疆的程序员
自学PHP开发,熟悉微信小程序 vue.js react-native 原生Android开发,现在琢磨java Springboot,netty 程序员最大的优势不是你掌握了多少经验,而是能根据实际需求快速掌握相关知识且应用,程序员不是搞科研
展开
-
easyswoole 使用 php-amqplib/php-amqplib 自定义进程消费出现 SQLSTATE[HY000] [2006] MySQL server has gone away
出现场景使用 php-amqplib/php-amqplib 自定义进程进行消费,当程序运行1天左右样子再消费会出现 SQLSTATE[HY000] [2006] MySQL server has gone away,再次消费会出现SQLSTATE[HY000] [2002] Connection reset by peer or Transport endpoint is not connected原因分析easyswoole 使用的是数据库连接池,php-amqplib/php-amqplib 组原创 2022-03-21 01:40:49 · 2913 阅读 · 0 评论 -
【转载】laravel 定时任务生成root权限日志导致应用崩溃
问题开发一个培训报名系统,需要定时关闭订单,发送上课通知等操作,于是接入了 Laravel 的定时任务。但实际运行时,出现 Laravel 无权限写入日志问题,导致应用异常崩溃的问题。原因服务器采用的是 linux,Laravel 定时任务是直接以 root 用户的身份执行的,而定时任务执行时创建了新日志文件,新文件的权限是 -rw-r–r-- 1 root root,这样的权限配置使得正常运行项目的 www 用户无法写入此日志文件,导致错误。解决方法经过多方查询,最后采用命令 sudo cron转载 2021-08-20 17:34:38 · 505 阅读 · 0 评论 -
PHP调用c#.Net 的webservice
1、PHP必须按照soap 扩展,是否按照具体看phpinfo();上代码,亲测可用<?php try{ libxml_disable_entity_loader(false); $client = new SoapClient('http://29.3.4.3:8020/WebServiceDataWith.asmx?WSDL'); $param = array('user'=>'1111','pwd'=> '2222','pageSize'原创 2021-06-25 16:35:19 · 366 阅读 · 2 评论 -
laravel 项目 计划任务 日志文件出现root 账号权限,导致www 无法写入 错误解决
1、删除root日志文件2、使用www用户来配置crontab注意:www 取决于您服务器的web用户名crontab -u www -e3、添加计划任务* * * * * /www/server/php/73/bin/php /www/wwwroot/ost.com/artisan schedule:run >> /dev/null 2>&1保存运行一段时间 看到打印的日志就是www用户...原创 2021-04-17 13:48:10 · 1110 阅读 · 0 评论 -
微信公众号开发 access_token 管理的正确姿势
1、微信公众号开发中 经常被忽略的问题就是access_token 维护,微信公众号的token 获取次数目前是2000次/天,当超出后需要去后台进行点击清空访问次数,一个月有10次机会正确的做法是,在一个项目中,access_token 的刷新和存储需要进行统一管理(如1小时定时刷新一次),由计划任务定时进行刷新,相应的功能模块统一取缓存的access_token,这样就可以避免各自取,很快就消耗完当日的次数...原创 2021-03-04 16:24:19 · 921 阅读 · 2 评论 -
MAC MAMP PRO 使用apache,PHP无法接收 header Authorization 字段处理
1、项目根目录下 创建“.htaccess”<IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] SetEnvIf Authorization .+ HTTP_AUT原创 2021-01-13 17:45:09 · 430 阅读 · 0 评论 -
关于ios拍照上传角度问题,使用PHP后端代码进行角度修正
ios设备拍照上传会出现角度不正确的问题,对于这种问题我们可以在PHP后端获取图片的旋转角度然后进行修正即可特别注意:图片必须是拍照上传的原始图片,切勿在前端通过js进行压缩等“重新生成新图片”操作,否则新生成的图片是没有角度信息的(无Orientation字段),导致PHP无法正确获取角度1、PHP版本必须按照exif 扩展,否则exif_read_data 函数将无法使用出现致命错误上代码代码最有效的方式是在上传文件方法最前面进行处理,对角度处理后,不影响后面的处理逻辑if(strpo原创 2021-01-09 17:01:18 · 215 阅读 · 0 评论 -
Laravel 框架 生产环境加速必备
1、开启 Opcache这一条对所有 PHP 项目都适用, 很人多说自己已经开启了 Opcache, 事实上往往没有,因为 Opache 是否已经开启是肉眼不可见的, 所以可以使用如下命令确认:php -r "var_dump(function_exists('opcache_get_status'));"重点说明:需要注意命令行PHP版本和PHP-fpm 使用的版本需要一样才可以验证此行如果返回 bool(true) 则说明 Opacahe 已经安装成功了开启Opcache 是最重要的一环。原创 2021-01-07 18:36:30 · 393 阅读 · 0 评论 -
人人商城-提示百度地图key过期的修改办法
原创 2020-12-11 15:41:00 · 1774 阅读 · 0 评论 -
php 自定义打日志类
1、实际项目中打日志是一个非常重要的一项工作,日志收集直接关系到系统后期优化和故障排查的重要依据,因此打印日志的规范化也直接影响到后期日志查看的便捷性日志效果如下代码如下<?phpnamespace app\index\controller;/** * 使用说明: * 在构造方法中设置商户id和文件前缀 * LoggerUtils::setShopId(33); * LoggerUtils::setFilePrefix('goods'); * Class L原创 2020-12-02 11:06:08 · 174 阅读 · 0 评论 -
关于PHP签名中的容易犯错问题记录
问题描述1、一般计算签名的算法是将请求数据key=>value 首先进行按key排序 然后按照 key=>value 使用& 拼接,错误(偷懒)做法:使用$map=[ 'name'=>'王力宏', 'age'=>33, 'address'=>'中国', 'idcard'=>'533433434343434444', 'map'=>json_encode([1,2,3])];ksort($map);原创 2020-11-10 18:50:39 · 270 阅读 · 2 评论 -
商城对外开放接口,如何和第三方对接商城的系统保持商品库存,等相关信息同步解决办法
采用订阅模式实现通知1、以下称对外开放接口的商城为主商城,对接商城接口的系统为第三方商城2、传统的做法是第三方商城定时去查询主商城的商品数据,达到更新库存和规格相关信息,这样做的有个很大的弊端就是资源浪费,很多查询都是无功而返(数据没有变化)【采用订阅方式思路】1、当主商城有商品新增,编辑,删除,下架,库存变动的时候主动通知第三方商城,第三方商城在收到数据后做对应的处理考虑到通知的第三方商城数量多的情况可以采用消息队列+异步执行来提高发送消息的效率【上图】...原创 2020-11-04 08:59:52 · 2034 阅读 · 2 评论 -
MAC MAMP PRO 安装PHP扩展方法
1、下载扩展源码,比如redis源码(注意不同版本对应不同扩展库版本)2、使用 使用PHPize命令先查看当前系统PHP版本和路径 which php /Applications/MAMP/bin/php/php7.3.9/bin/php 1、执行phpize /Applications/MAMP/bin/php/php7.3.9/bin/phpize 2、执行config配置 ./configure --with-php-config=/Applications/MAMP/bin/php原创 2020-10-22 12:43:57 · 1493 阅读 · 1 评论 -
AES/CBC/PKCS7Padding 后端php7.2 前端Android
import javax.crypto.Cipher;import javax.crypto.spec.SecretKeySpec;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;public class aes { //加密方法 str为传输的值 key取商户私钥字符串的前16位 public static String aesEncrypt(String str, String key) throws Exc原创 2020-09-08 13:38:55 · 565 阅读 · 0 评论