![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
php
名称正在更新……
学会保持一颗童真的心!
展开
-
vue前端代理+nginx解决跨域问题
在vue.config.js中配置module.exports = { devServer: { proxy:{ '/api':{ target:'http://xxx.com', secure:false, changeOrigin:true, pathRewrite:{ '^/api':'' }原创 2021-11-15 16:52:32 · 331 阅读 · 0 评论 -
php运用redis订阅发布功能实现异步消息任务处理
话不多说直接上代码:消费者代码:subscribe.php<?phpset_time_limit(0);ini_set("default_socket_timeout",-1);$channel1="pubsub1";//频道1$channel2="pubsub2";//频道2try{ $redis=new Redis(); $redis->pconnect("127.0.0.1",6379);/** * [$callback 回调函数] * @$redis [当原创 2021-11-07 19:40:20 · 915 阅读 · 0 评论 -
PHP之Trait的使用详解
php从以前到现在一直都是单继承的语言,无法同时从两个基类中继承属性和方法,为了解决这个问题,php出了Trait这个特性用法:通过在类中使用use 关键字,声明要组合的Trait名称,具体的Trait的声明使用Trait关键词,Trait不能实例化如下代码实例:<?phptrait Dog{ public $name="dog"; public function bark(){ echo "This is dog"; }}class.原创 2021-10-27 09:12:50 · 301 阅读 · 0 评论 -
使用证书对数据进行签名、验签、加密、解密以及openssl的常用方法
首先要使用openssl提供的函数,PHP需要此扩展:编译时加上此配置即可:–with-openssl=/path/to/ssl首先看看如何对数据进行签名:openssl_pkey_get_private ( mixed $key [, string $passphrase = “” ] ) 此方法用于加载私钥。$key接受的参数可以是私钥文件(协议+文件路径)或者私钥的内容。如上面代码里的方式是后者,如果换成第一种方式则是:p r i v a t e k e y = openssl_p转载 2021-08-31 16:17:04 · 2144 阅读 · 0 评论 -
php设计模式
单例模式特点:三私一公:私有的静态变量(存放实例),私有的构造方法(防止创建实例),私有的克隆方法(防止克隆对象),公有的静态方法(对外界提供实例)应用场景:程序应用中,涉及到数据库操作时,如果每次操作的时候连接数据库,会带来大量的资源消耗。可以通过单例模式,创建唯一的数据库连接对象。<?phpclass Singleton{ private static $_instance; private function __construct(){} pri.原创 2021-08-31 12:09:43 · 48 阅读 · 0 评论 -
微信支付api V3 接口营销图片
本节口主要难题是body体的构造,下面是公共配置文件代码,命名为wxBase.php,代码如下:<?php//#微信基础信息$wxMerchantId="商户号";//商户号$wxMerchantApiCertificate=__DIR__."/cert/apiclient_cert.pem";//商户证书$wxMerchantApiPrivateKey=__DIR_...原创 2021-08-26 17:18:37 · 184 阅读 · 0 评论 -
php怎么实现多图片压缩打包下载
先封装我们的一个压缩打包下载类,代码如下:classzipfile{var$datasec=array();var$ctrl_dir=array();var$eof_ctrl_dir="\x50\x4b\x05\x06\x00\x00\x00\x00";var$old_offset=0;functionunix2_dostime($unixtime=0){$timearray=($u...原创 2021-08-26 17:10:16 · 390 阅读 · 0 评论 -
PHP在微信支付API V3请求接口签名的生成
微信支付的支付接口更新了到了apiv3 ,主要难题还是在签名生成,只要这个解决,其他都不是问题,看了下签名生成的步骤,下面贴出详细的代码,封装调用方法:<?php/***微信公共配置方法*//*备注:apiclient_cert.p12是商户证书文件,除PHP外的开发均使用此证书文件*/#微信基础信息$wxMerchantId="商户号";//商户号$wxMerchan...原创 2021-08-26 16:59:55 · 2161 阅读 · 0 评论 -
用原生PHP生成验证码
生成验证码的PHP文件,命名为verify.php,代码如下:<?php//11>设置session,必须处于脚本最顶部session_start();$image=imagecreatetruecolor(100,30);//1>设置验证码图片大小的函数//5>设置验证码颜色//imagecolorallocate(intim,intred,intgreen,intblue);$bgcolor=imagecolorallocate...原创 2021-08-26 16:54:57 · 213 阅读 · 0 评论 -
php 处理数字小数点的常见方案
php保留两位小数并且四舍五入$num = 5566.56831; echo sprintf("%.2f", $num);php保留两位小数并且不四舍五入$num = 5566.56831; echo sprintf("%.2f",substr(sprintf("%.3f", $num), 0, -2));php保留2位小数,只舍不入<?php/*** 小数保留后2位,只舍不入*/function round_num($num){...原创 2021-04-27 14:17:33 · 895 阅读 · 0 评论 -
PHP接收并解析微信支付结果通知
支付完成后,微信会把相关支付结果和用户信息发送给商户,商户需要接收处理,并返回应答。微信通知信息为xml格式。信息格式大致如下:<xml><appid><![CDATA[wx65498522b9a7pokr]]></appid><bank_type><![CDATA[CFT]]></bank_type><cash_fee><![CDATA[1]]></cash_fee>&l原创 2020-11-26 15:07:40 · 905 阅读 · 0 评论 -
jwt是什么?php jwt类封装和使用
JWT是什么JWT是json web token缩写。它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证。基于token的身份验证可以替代传统的cookie+session身份验证方法。JWT由三个部分组成:header.payload.signatureheader部分:{ "alg": "HS256", "typ": "JWT"}对应base64UrlEncode编码为:eyJhb.原创 2020-10-23 13:31:30 · 873 阅读 · 1 评论 -
uni-app+workman之如何使用Websocket
uni-app框架websocket测试发现:【APP端无法同时开多个websocket----这个问题等待解决!!!H5端没问题】测试发现问题所在:uni.connectSocket(OBJECT)创建出来的对象socketTask在浏览器中是一个实例对象【支持同时创建多个实例】而在APP却是一个单实例【所有新建的url的websocket都指向最后一个创建的实例】总的来说,还是可以使用,在APP中尽可能把数据一起打包发过来【只开通一个websocket,一个用户在同一个页面下开通一个w...原创 2020-10-20 17:08:29 · 1058 阅读 · 1 评论 -
PHP绕过open_basedir限制操作文件的方法
0x00 预备知识关于open_basediropen_basedir是php.ini中的一个配置选项它可将用户访问文件的活动范围限制在指定的区域,假设open_basedir=/home/wwwroot/home/web1/:/tmp/,那么通过web1访问服务器的用户就无法获取服务器上除了/home/wwwroot/home/web1/和/tmp/这两个目录以外的文件。注...原创 2020-09-01 09:09:09 · 619 阅读 · 0 评论 -
php发送stmp邮件类 给有需要的人
<?php/*** email smtp (support php7)** Modified by: Reson 2017/06* UPDATE:* 1、change ereg to preg_match;change ereg_replace to preg_replace.* 2、change var to public/private.** More: http://www.daixiaorui.com**/class Smtp{ /...原创 2020-07-01 14:48:33 · 634 阅读 · 0 评论 -
Php+redis+锁机制实现高并发秒杀抢购解决方案
<?php$redis=new Redis();$redis->connect('127.0.0.1',6379);$num=$redis->get('num');//购买数量$ku=1;//库存量if($num<$ku){$file=fopen('1.lock',"a");if(flock($file,LOCK_EX)){$store=$redis-&...原创 2020-05-07 15:45:30 · 1160 阅读 · 2 评论 -
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
<?php/*** 模拟登录*///初始化变量$cookie_file = "tmp.cookie";$login_url = "http://111.com/member/login";$verify_code_url = "http://111.com/member/verifycode";$url = "http://111.com/member/loginpro...原创 2019-10-14 20:56:39 · 385 阅读 · 1 评论 -
PHP操作Redis函数及讲解
<?php/**********************************连接redis********************************/$redis=new Redis;$redis->connect('127.0.0.1',6379);/**********************************string字符串***********...原创 2019-07-19 14:25:27 · 1185 阅读 · 0 评论 -
PHP计划任务之关闭浏览器后仍然继续执行的函数ignore_user_abort
备忘一下这个函数:函数名称:ignore_user_abort本函数配置或取得使用端连接中断后,PHP 程序是否仍继续执行。默认值为中断连接后就停止执行。在 PHP 配置文件中 (php3.ini/php.ini) 的 ignore_user_abort 选项就是配置处。本功能在 PHP 3.0.7 版之后才开始提供。官方说明:http://cn2.php.net/manual/en/fun...转载 2019-07-20 09:21:05 · 472 阅读 · 0 评论 -
PHP中file_put_contents追加和换行
在PHP的一些应用中需要写日志或者记录一些信息,这样的话。可以使用fopen(),fwrite()以及 fclose()这些进行操作。也可以简单的使用file_get_contents()和file_put_contents().file_put_contents()写文件。默认的是重新写文件,也就是会 替换原先的内容。追加的话使用参数FILE_APPEND以追加形式写入内容 当设...转载 2019-07-20 09:23:30 · 538 阅读 · 0 评论 -
PHP中var_export的使用方法
var_export可以将一个数组转为一个字符串不同于var_dump,var_export并不会输出数据的类型以及字符大小等,只会简单把数组的key跟value拼接成一个字符串<?php$arr = ['key1'=>'val1','key2'=>'val2','key3'=>'val3','key4'=>'val4','key5...转载 2019-07-20 09:27:28 · 1361 阅读 · 0 评论 -
array_merge_recursive() 与array_merge()函数
<?php$a1=array("a"=>"red","b"=>"green");$a2=array("c"=>"blue","b"=>"yellow");print_r(array_merge_recursive($a1,$a2));?>//打印结果:Array ( [a] => red [b] => Array ( [0] =>...原创 2019-08-02 15:22:28 · 1665 阅读 · 0 评论 -
php 正则表达式-preg_match/preg_match_all
正则表达式的组成部分1.定界符 (必须)通常使用特殊字符组成,常用“/”。2.原子(必须)是正则表达式的最基本组成单元,而且在每个模式中最少要包含一个原子。原子是由所有那些未显示指定为元字符的打印和非打印字符组成,具体分为5类。普通字符作为原子:如a~z,A~Z,0~9。 一些特殊字符和转义后元字符作为原子:\' \* \+ \? \.等。 一些非打印字符作为原子:如:f n ...转载 2019-07-21 09:13:36 · 1706 阅读 · 0 评论 -
php中file_get_contents把本地图片或远程图片直接直接输出浏览器
//$url = 'www.xx.com/?img';$img = file_get_contents("./2.jpg",true);header("Content-Type: image/jpeg;text/html; charset=utf-8");echo $img;exit;//这个不能少,否则乱码原创 2019-08-05 11:57:43 · 3267 阅读 · 0 评论 -
总结:ajax上传图片有几种方式 -php+ajax上传文件
第一种:直接利用jquery $.ajax上传<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body><form enctype="m...原创 2019-08-14 21:05:31 · 524 阅读 · 0 评论 -
thinkphp3+redis实现并发处理
基本思路是所有操作用过redis的队列和集合处理并发1.用户抢购队列(List),user_list2.商品队列(List),goods_list3.订单信息(Hash集合),order_info4.购买成功用户(Set集合),bought_listPS:1和2用来控制并发,队列的rPop是具有原子性的,即使处理并发,也是一个个处理,不会出现重复和超卖的情况。3则是用来暂时...原创 2019-09-08 09:05:55 · 634 阅读 · 0 评论 -
Redis消息队列实现秒杀
消息队列的应用场景例如:秒杀、抢单功能。下面写个Demo简单实现一下秒杀,也就是抢购。首先创建一个lpush.html文件,代码如下:<!DOCTYPE html><html> <head> <title>TODO supply a title</title> <meta ch...转载 2019-09-08 09:47:14 · 470 阅读 · 0 评论 -
php高并发和大流量的优化方案介绍
本篇文章给大家带来的内容是关于php高并发和大流量的优化方案介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。一 高并发的概念在互联网时代,并发,高并发通常是指并发访问。也就是在某个时间点,有多少个访问同时到来。二 高并发架构相关概念1、QPS (每秒查询率) : 每秒钟请求或者查询的数量,在互联网领域,指每秒响应请求数(指HTTP请求)2、PV...原创 2019-09-08 10:20:50 · 427 阅读 · 0 评论 -
打造微信一样的聊天功能:tp5+workerman实现在线聊天客服功能(一)
国庆放假在家充充电哈,开始学习workerman,因为之前也一直想研究下socket通信,趁此机会把学到的分享给大家哈~~,话不多说直接上效果图:效果图是用户10与20间的聊天截图,因为界面是自己随便做的,比较丑请大神见谅哈。。。。。。。1,先到workerman官网下载GatewayWorker框架;2、将下载好的解压放在tp5的vendor里面,GatewayWo...原创 2019-10-04 18:36:07 · 3491 阅读 · 0 评论 -
事务锁或redis实现商品库存出现超卖或秒杀场景
事务锁实现超库存解决:<?php$pdo = new PDO('mysql:host=127.0.0.1;port=3306; dbname=test','root','123456');$pdo->beginTransaction();//开启事务$sql="select `number` from storage where id=1 for UPDATE ";//利...原创 2019-10-11 08:53:09 · 778 阅读 · 0 评论 -
【整理分享-简单易懂】用PDO操作MySQL数据库的基本方法
一、连接数据库:$pdo=new PDO("mysql:dbname=person;host=localhost","root","root");说明:1、dbname是数据库名称;2、host填写数据库服务器ip地址,一般(localhost);3、上图中的两个root,分别是用户名和密码。二、查询数据两种方法,1、直接查询$sql = "select...原创 2019-07-18 17:19:48 · 388 阅读 · 0 评论