首页
壁纸
留言
友链
关于
统计
Search
1
武汉理工刷课,武汉理工大学刷课,刷在线作业程序
912 阅读
2
Linux下Golang编译程序在后台运行及开机启动
740 阅读
3
抖音userid怎么获取
621 阅读
4
破解Typora1.1.5最新版
499 阅读
5
[必看]Go语言配置代理
388 阅读
技术
php
Mysql
wechat公众号
git
前端
前端大杂烩
vue2
vue3
Golang
gorm
golang配置
韩昊杰的软件
工具
VMware
其他
docker
kafka
nginx
openwrt
登录
Search
韩昊杰
累计撰写
65
篇文章
累计收到
52
条评论
首页
栏目
技术
php
Mysql
wechat公众号
git
前端
前端大杂烩
vue2
vue3
Golang
gorm
golang配置
韩昊杰的软件
工具
VMware
其他
docker
kafka
nginx
openwrt
页面
壁纸
留言
友链
关于
统计
搜索到
20
篇与
的结果
2022-04-24
如何配置php.ini才能让PHP性能最大优化
如何配置php.ini才能让PHP性能最大优化用于生产环境中的PHP需要对其进行优化,可以让PHP自身发挥更好的性能,除了写好PHP代码,还要配置好php.ini。本文从内存、文件上传、会话缓冲输出、真实路径缓存这几个方面讲解php.ini的配置调优。内存默认设置memory_limit = 128M单个进程可使用的内存最大值,这个值的设定可以从以下几点考虑:应用的类型。如果是内存集中型应用,可增加该值;单个 PHP 进程平均消耗的内存,该值可通过多次运行同一个脚本来计算平均值;能负担多少个 php-fpm 进程;该值等于分配的总内存除以单个 PHP 进程平均消耗的内存文件上传默认设置file_uploads = On max_file_uploads = 20 upload_max_filesize = 2M max_execution_time = 30 值 为 0 代表没有限制设置max_file_uploads来决定同时允许多少个文件上传;设置upload_max_filesize来决定每个文件上传的最大值;如果是长时间任务,尽量使用队列来处理,因此,可适当缩短max_execution_time的值;注意: Web 服务器也可以设置文件上传大小及超时时间,不能仅仅以 php.ini 的设置为准;会话PHP 的会话默认是保存在硬盘中session.save_handler = files在实际应用中,应当将会话保存在内存中。可使用 Memcached 或者 Redis。这样做主要有两个好处:提高速度;有助于后期的扩展,如果会话数据存储在硬盘中,不便于增加额外的服务器,如果把会话数据存放在 Memcached 或 Redis 里,任何一台分布式 PHP-FPM 服务器都能访问会话数据。可通过 PECL 安装memcached扩展并设置默认的save_handler为memcachedsession.save_handler = 'memcached' session.save_path = '127.0.0.1:11211'缓冲输出默认值output_buffering = 4096在较少的片段中把内容传递给访问者的浏览器,能减少 HTTP 请求总数。因此,我们要让 PHP 缓冲输出,默认情况下,PHP 已经启用了输出缓冲功能,PHP 缓冲 4096 字节的输出之后才会把内容发送给 Web 服务器。注:如果想要修改输出缓冲区的大小,确保使用的值是 4(32 位系统)或 8(64 位系统)的倍数。真实路径缓存默认值realpath_cache_size = 4M realpath_cache_ttl = 120PHP 会缓存应用使用的文件路径,这样每次包含或导入文件时就无需不断搜索包含路径了,这个缓存叫真实路径缓存(realpath cache),如果运行的是大型的 PHP 文件(如 Composer 组件),使用了大量文件,增加 PHP 真实路径缓存的大小能得到更好的性能。
2022年04月24日
126 阅读
0 评论
0 点赞
2022-04-22
PHP微擎简易导表程序
PHP微擎简易导表程序<?php global $_GPC, $_W; $aid = $_GPC["aid"]; $lottery = pdo_get("me_daticj_lottery", array("uniacid" => $_W["uniacid"], "id" => $aid)); $condition = " a.uniacid = '{$_W["uniacid"]}' AND a.aid = {$aid} AND a.userid = b.id AND a.awardid = c.id"; if (!empty($_GPC["nickname"])) { $condition .= " AND b.nickname LIKE '%{$_GPC["nickname"]}%'"; } if (!empty($_GPC["realname"])) { $condition .= " AND b.realname LIKE '%{$_GPC["realname"]}%'"; } if (!empty($_GPC["mobile"])) { $condition .= " AND b.mobile LIKE '%{$_GPC["mobile"]}%'"; } $condition .= " AND a.hasAward=1 ORDER BY a.id DESC"; $list = pdo_fetchall("SELECT b.nickname,b.realname,b.mobile,c.award_type,c.award_name,a.status,a.createtime,b.xiaoqu,b.isvip FROM " . tablename("me_daticj_winner") . " a, " . tablename("me_daticj_user") . " b, " . tablename("me_daticj_awards") . " c WHERE {$condition}"); $html = "\xef\xbb\xbf"; $html .= "微信昵称\t,真实姓名\t,手机号码\t,奖品类型\t,奖品名称\t,发奖状态(1已发0未发)\t,中奖时间\t,校区\t,是否是会员(1是会员0不是会员)\t,\n"; foreach ($list as $key => $value) { foreach ($value as $k => $v) { $row = $v . "\t,"; $html .= $row; } $html .= "\n"; } $filename = "中奖记录----" . $lottery["title"]; header("Content-type:text/csv"); header("Content-Disposition:attachment; filename=" . $filename . ".csv"); echo $html; exit;直接访问该路由即可
2022年04月22日
119 阅读
0 评论
0 点赞
2022-04-07
微信公众号获取AccessToken,并保存到文件中,且过期前5分钟时再次自动获取
公用获取token,因微信公众号的 AccessToken 有效期是7200秒(两小时),且每日请求次数有限,所以我们可以将第一次请求的 AccessToken 保存到文件中,并且在过期前5分钟时再次自动获取,以减少 AccessToken 的实时请求次数浪费!代码如下//生成accesstoken function getAccessToken() { // 微信公众平台appid及appsecret密钥 $appid = 'wx232b4aa*********'; $appsecret = '6b7f679961e76aa615e6588********'; //储存access_token文件 $logfilename = dirname(dirname(__FILE__)).'/online/accesstoken.txt'; //如果不存在则创建一份文件 if(!file_exists($logfilename)){ file_put_contents($logfilename,''); //system("chmod 777 /data/wwwroot/blog/public/online/accesstoken.txt"); } //读取内容 $tokeninfo = file_get_contents($logfilename); //文件里面有内容 if(!empty($tokeninfo)){ //转换成数组形式 $tokeninfo = json_decode($tokeninfo,true); if($tokeninfo['endtime']-time()<300){ //预留5分钟的网络延迟时间,过期的话重新获取access_token //清空文档里面的内容 file_put_contents($logfilename, ''); $token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid.'&secret='.$appsecret; //获取文件内容或获取网络请求的内容 $result = http_Msg($token_url,"GET"); $fresult = $result; //access_token过期时间点 $fresult["endtime"] = $result['expires_in']+time(); $fresult = json_encode($fresult); //将access_token数据存在文件中 file_put_contents($logfilename, $fresult); }else{ //没有过期直接返回存储在文件中的access_token $result = $tokeninfo; } }else{ //第一次获取access_token $token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid.'&secret='.$appsecret; //获取文件内容或获取网络请求的内容 $result = http_Msg($token_url,"GET"); $fresult = $result; $fresult["endtime"] = $result['expires_in']+time(); $fresult = json_encode($fresult); //写入文件 file_put_contents($logfilename, $fresult); } return $result; } // CURL模拟get/post请求 function http_Msg($url,$method="GET",$data=array()) { $ch = curl_init(); $wx_data = json_encode($data); //打开 $ch = curl_init(); //请求方法为POST的时候 if($method == "POST"){ curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $wx_data); } curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); $response = curl_exec($ch); //关闭 curl_close($ch); $result = json_decode($response,true); return $result; } // 获取AccessToken $AccessToken = getAccessToken();
2022年04月07日
185 阅读
2 评论
1 点赞
2022-04-07
微信公众号,用户消息接收与回复
当用户在公众号内发送消息时,我们可以在服务器配置完好的前提下,通过相关代码,接收用户发送的信息,并予以相应的回复!代码如下<?php // 接收用户发送消息(二选一) // $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//全局变量 存的用户的发送的信息 $postStr = file_get_contents("php://input"); // 但是有的服务器 如果使用 $GLOBALS 接不到值 使用 // 存储用户发送的消息 file_put_contents('data.txt',$postStr); $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);// 数据对象 $fromUsername = $postObj->FromUserName; // 发送者 信息 $toUsername = $postObj->ToUserName; // 接受者 信息 公众号 $msgtype = $postObj->MsgType; // 获取消息的类型 $keyword = trim($postObj->Content); // 接收发送的文本 $EventKey = $postObj->EventKey; // 获取click事件的值 公众号 // 按键回复 if($EventKey == 'music'){ echo '<xml> <ToUserName><![CDATA['.$fromUsername.']]></ToUserName> <FromUserName><![CDATA['.$toUsername.']]></FromUserName> <CreateTime>'.time().'</CreateTime> <MsgType><![CDATA[music]]></MsgType> <Music> <Title><![CDATA[我要找到你]]></Title> <Description><![CDATA[《我要找到你》是由陈明演唱的一首歌]]></Description> <MusicUrl><![CDATA[https://music.163.com/outchain/player?type=2&id=212964&auto=1&height=66]]></MusicUrl> <HQMusicUrl><![CDATA[https://music.163.com/outchain/player?type=2&id=212964&auto=1&height=66]]></HQMusicUrl> </Music> </xml>'; } // 接收消息回复 switch($keyword){ case 1: // 回复文本 $str = '<xml> <ToUserName><![CDATA['.$fromUsername.']]></ToUserName> <FromUserName><![CDATA['.$toUsername.']]></FromUserName> <CreateTime>'.time().'</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[世界很大,我想去看看]]></Content> </xml>'; break; case 2: // 回复图片消息 $str = '<xml> <ToUserName><![CDATA['.$fromUsername.']]></ToUserName> <FromUserName><![CDATA['.$toUsername.']]></FromUserName> <CreateTime>'.time().'</CreateTime> <MsgType><![CDATA[image]]></MsgType> <Image> <MediaId><![CDATA[通过素材管理中的接口上传多媒体文件,得到的图片id]]></MediaId> </Image> </xml>'; break; case 3: // 回复语音消息 $str = '<xml> <ToUserName><![CDATA['.$fromUsername.']]></ToUserName> <FromUserName><![CDATA['.$toUsername.']]></FromUserName> <CreateTime>'.time().'</CreateTime> <MsgType><![CDATA[voice]]></MsgType> <Voice> <MediaId><![CDATA[通过素材管理中的接口上传多媒体文件,得到的语音消息id]]></MediaId> </Voice> </xml>'; break; case 4: // 回复视频消息 $str = '<xml> <ToUserName><![CDATA['.$fromUsername.']]></ToUserName> <FromUserName><![CDATA['.$toUsername.']]></FromUserName> <CreateTime>'.time().'</CreateTime> <MsgType><![CDATA[video]]></MsgType> <Video> <MediaId><![CDATA[通过素材管理中的接口上传多媒体文件,得到的视频消息id]]></MediaId> <Title><![CDATA[那些年]]></Title> <Description><![CDATA[回不去的曾经!]]></Description> </Video> </xml>'; break; case 5: // 回复音乐消息 $str = '<xml> <ToUserName><![CDATA['.$fromUsername.']]></ToUserName> <FromUserName><![CDATA['.$toUsername.']]></FromUserName> <CreateTime>'.time().'</CreateTime> <MsgType><![CDATA[music]]></MsgType> <Music> <Title><![CDATA[我要找到你]]></Title> <Description><![CDATA[《我要找到你》是由陈明演唱的一首歌]]></Description> <MusicUrl><![CDATA[https://music.163.com/outchain/player?type=2&id=212964&auto=1&height=66]]></MusicUrl> <HQMusicUrl><![CDATA[https://music.163.com/outchain/player?type=2&id=212964&auto=1&height=66]]></HQMusicUrl> </Music> </xml>'; break; // 回复图文消息 case 6: $str = '<xml> <ToUserName><![CDATA['.$fromUsername.']]></ToUserName> <FromUserName><![CDATA['.$toUsername.']]></FromUserName> <CreateTime>'.time().'</CreateTime> <MsgType><![CDATA[news]]></MsgType> <ArticleCount>1</ArticleCount> <Articles> <item> <Title><![CDATA[图文消息标题:往前走,亦或回头]]></Title> <Description><![CDATA[图文消息描述:一生的旅程]]></Description> <PicUrl><![CDATA[图片链接,支持JPG、PNG格式,较好的效果为大图360200,小图200200]]></PicUrl> <Url><![CDATA[点击图文消息跳转链接]]></Url> </item> </Articles> </xml>'; break; default: // 回复文本 $str = '<xml> <ToUserName><![CDATA['.$fromUsername.']]></ToUserName> <FromUserName><![CDATA['.$toUsername.']]></FromUserName> <CreateTime>'.time().'</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[请回复数字:【1 2 3 4 5 6】以体验不同的功能]]></Content> </xml>'; break; } echo $str;
2022年04月07日
163 阅读
0 评论
0 点赞
2022-04-07
微信公众号推送模板消息,向指定的openID群发
微信作为社交软件,已经渗透到我们每一个人的日常生活当中,所以微信公众号的消息模板功能,可以很好且及时的向用户推送我们想要用户知道的消息,或者是用户本身想要知道的事情。当然,不是所有消息都可以推送,详情查看官方文档!模板消息样例前期准备,添加模板插件注:只有通过“微信认证的服务号”才有推送模板消息接口的权限。第一步,在功能->添加功能插件处申请模板消息使用权限。第二步,选择公众账号服务所处的两个行业,每月可更改一次所选行业。第三步,在所选择行业的模板库中选用已有的模板,添加至我的模板,或申请新模板。代码如下$data = getDataArray('o-tcNt82J11wDhIQ57OOD********');//传入用户的openID,发送消息模板 $json_data = json_encode($data);//转化成json数组让微信可以接收 $res = https_request($url, urldecode($json_data));//请求开始 $res = json_decode($res, true); if ($res['errcode'] == 0 && $res['errcode'] == "ok") { echo "发送成功!<br/>"; var_dump($res); die('end'); }else{ echo 'error'.$res['errcode']; die('end'); } die('end'); //获取发送数据数组 function getDataArray($value) { $data = array( 'touser' => $value, //要发送给用户的openid 'template_id' => "ghKp-eHfi-BgWa0DTbsTpWSppynTpeCfKpgZeoe4ti4",//改成自己的模板id,在微信后台模板消息里查看 'url' => "www.seafarechina.com/", //自己网站链接url 'data' => array( 'first' => array( 'value' => "您好,您已成为微信某某店会员。", 'color' => "#ff3300" ), 'cardNumber' => array( 'value' => "6666666", 'color' => "#f00" ), 'address' => array( 'value' => "北京市海淀区御花园", 'color' => "#173177" ), 'VIPName' => array( 'value' => "Panglj", 'color' => "#3d3d3d" ), 'VIPPhone' => array( 'value' => "1584848****", 'color' => "#3d3d3d" ), 'expDate' => array( 'value' => "2020年1月9日", 'color' => "#3d3d3d" ), 'remark' => array( 'value' => "如有疑问,请咨询1584848****。", 'color' => "#ff3300" ), ) ); return $data; } //curl请求函数,微信都是通过该函数请求 function https_request($url, $data = null) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); if (!empty($data)) { curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($curl); curl_close($curl); return $output; }
2022年04月07日
159 阅读
0 评论
0 点赞
1
...
3
4