php开发
文章平均质量分 65
攻城狮的梦
专注于php,python,go语言开发,熟练crm,电商等saas平台,以及小程序,app开发
展开
-
php中的错误和异常捕获
在PHP中,异常(Exceptions)和错误(Errors)是两个不同的概念,尽管它们都与运行时问题有关,但它们有各自的用途和处理方式。原创 2024-10-16 11:48:33 · 776 阅读 · 0 评论 -
PhpSpreadsheet创建带复杂表头的excel数据
一:背景最近需要统计一些数据,导出到excel,主要是一些区域的人员销售统计数据,涉及到复杂的表头和数据合并,我们使用PhpSpreadsheet这个excel操作库很容易就实现了,记录一下实现过程。二:excel表头数据实现表头有两行数据,前几列是两行合并,后几列是按照两行显示具体如下:首先我们把表头展示实现: $spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet; $sheet = $spre原创 2024-10-16 10:24:54 · 1232 阅读 · 0 评论 -
数据报表统计实现
我们可以根据需求来梳理,假定需求是以登录员工为例统计该员工下的客户信息,假如功能是员工持有的客户数量,员工持有的下单客户数量,员工持有的认证客户数量,员工持有的客户下单总金额等,这里涉及客户表和订单表。我们已经确定涉及的表是客户表和订单表,要计算登录员工的客户信息和下单信息。可以确定我们需要输出持有客户数量,下单客户数量,认证客户数量,下单客户总金额。最近需要开发一个数据统计的功能,主要是按照各种维度统计客户的数据,一般是按照日期来展示数量和变化情况。这里的客户数量,也可以根据员工名字或者时间进行搜索。原创 2024-06-06 17:12:35 · 630 阅读 · 0 评论 -
thinkphp6.0版本下子查询sql处理
以上就是thinkphp下子查询的使用,通过子查询,配合多个表的联查和关联搜索还是很方便的。原创 2024-06-04 15:17:49 · 1114 阅读 · 0 评论 -
thinkphp6中使用监听事件和事件订阅
在项目开发中有很多这样的场景,比如用户注册完了,需要通知到第三方或者发送消息。用户下单了,需要提示给客服等等。这些场景都有一个共同的特点是主流程和通知流程可以完全分离。通知流程是成功和失败不能影响到主流程。那么在thinkphp6中怎么实现这样的逻辑呢?可以使用事件订阅和事件监听。原创 2024-04-08 11:55:06 · 1204 阅读 · 0 评论 -
php实现多进程的几种方式
另外,由于PHP是一种解释型语言,每次请求都会执行一次脚本,这意味着如果你想要在多个线程中共享数据,你需要使用一些方法来传递数据,例如通过文件、数据库或共享内存等。在父进程中,你可以通过getmypid()函数获取父进程的进程ID。在子进程中,你可以通过getmypid()函数获取子进程的进程ID。通过配置PHP-FPM,你可以设置每个进程的最大请求数、进程数等参数,以实现多进程处理。pcntl扩展库提供了多线程相关的函数,如pcntl_fork()用于创建子进程,可以在子进程中执行PHP代码。原创 2024-01-25 22:05:37 · 1842 阅读 · 0 评论 -
php下curl发送cookie
php curl发送cookie的几种方式,下面来介绍下。原创 2024-01-25 10:06:43 · 2222 阅读 · 0 评论 -
php中常用的几个安全函数
这个函数对于在PHP中防止SQL注入攻击很有帮助,它对特殊的字符,像单引号和双引号,加上了“反斜杠”,确保用户的输入在用它去查询以前已经是安全的了。但你要注意你是在连接着数据库的情况下使用这个函数。但现在mysql_real_escape_string()这个函数基本不用了,所有新的应用开发都应该使用像PDO这样的库对数据库进行操作,也就是说,我们可以使用现成的语句防止SQL注入攻击。这个函数和上面的mysql_real_escape_string()很相似。原创 2024-01-11 20:20:49 · 564 阅读 · 0 评论 -
php处理高并发下单减库存解决
当多个用户同时尝试下单购买同一商品时,如何确保库存的准确性,同时保证系统的高可用性,是关键问题。当用户下单时,你可以开启一个数据库事务,先检查库存,如果库存充足,则扣除库存并提交事务。如果库存不足,则回滚事务,不执行扣减操作。例如,可以使用消息队列将请求放入队列中,并限制同时处理的请求数量。例如,使用数据库的行级锁或表级锁来锁定相关数据,防止其他请求同时修改。对于大型系统,可以考虑使用分布式锁机制,如Redis的RedLock算法。上面的方案的各有优劣,要根据自己的实际业务需求,去选择合适的方案。原创 2024-01-10 20:22:11 · 1201 阅读 · 0 评论 -
基于模块自定义扩展字段的后端逻辑实现(二)
上一节我们详细讲解了自定义扩展字段的逻辑实现和表的设计,这一节我们以一个具体例子演示下,如果实现一个订单模块的自定义扩展数据。原创 2024-01-09 21:14:20 · 1292 阅读 · 0 评论 -
php实现支付宝商户转账
最近工作中,要用到支付宝的商家转账功能,用php代码实现,网上找的内容,有些是老版本的实现,有些是调用sdk,而且功能还不完善。最后自己实现了官方最新的转账功能,特此记录下。原创 2024-01-08 21:18:18 · 1518 阅读 · 0 评论 -
基于商品列表的拖拽排序后端实现
这里我们假设商品列表有一个sort字段作为排序,有10个商品标号1到10,当移动1到6时,我们要做的操作是把1号的sort更新为6,把1到6包含6的5个元素sort减少1,这样2号变为1号,6号变为5号,sort还是连续的。同理,把6号移动到2号时,把2到6包含2的4个元素都增加1,这样2号变为3号,5号变为6号。这样我们的顺序也是连续的。后台实现拖拽排序通常需要与前端进行配合,对商品的列表拖拽排序,前端需要告诉后端拖拽的元素和拖动的位置。if ($sort > $cSort) {//从上往下拖动。原创 2024-01-06 17:26:11 · 1721 阅读 · 0 评论 -
php最常出现的错误
PHP foreach构造在PHP 4中引入,提供了一种迭代数组和可迭代对象的简单方法,例如实现\Traversable接口的对象。尝试在具有不同数据类型或未初始化变量的变量上使用它。它将发出错误,例如下面的示例。上面的代码抛出与消息“()提供的foreach无效参数”警告,因为$y_exceptions不是数组也不实现ArrayAccess,\Traversable或任何其它可迭代接口。PDOExceptions代表PDO(PHP数据对象)引发的错误,正如PHP手册所描述的那样,它是“原创 2023-12-28 21:40:08 · 414 阅读 · 0 评论 -
thinkphp6.0升级到8.0
最近写的项目需要使用thinkphp8.0,之前的老项目需要从php6.0升级到8.0,特此记录下升级过程。原创 2023-12-28 21:04:34 · 2191 阅读 · 0 评论 -
php使用kafka
echo '接收到消息: ' . $message->payload . PHP_EOL;echo '消费错误: ' . $message->errstr() . PHP_EOL;echo '已达到分区末尾,没有更多消息可消费' . PHP_EOL;//kafka服务器地址。// echo '消费超时' . PHP_EOL;// 等待消息发送完成。$value ='这是消息';原创 2023-07-06 13:43:01 · 1752 阅读 · 0 评论 -
mysql死锁
看到A操作会调用一个接口,接口里面会开启事务操作。B操作会调用另一个接口,发现A,B的两个接口会共同更新一个表的同一条记录。分析是A操作时候开启的事务在进行中,又进行了B操作造成产生了操作用一个表的同一条记录造成死锁。发现A操作事务回滚出现问题。造成了一个事务无法结束。最近线上出现一个问题,就是进行一个A操作以后,再进行另一个B操作,会发生死锁。原创 2023-02-23 13:32:01 · 134 阅读 · 0 评论 -
php浏览器接口请求中断问题
设置了超时时间,调用接口,关闭浏览器,接口还在执行,达到脚本执行时间会停止执行。set_time_limit(0) 好像windows下,不生效。问题:php在浏览器请求接口数据,关闭浏览器,接口还会执行吗?echo '正在执行...请等待';问题:php执行长时间任务,怎么在浏览器执行?可以一次执行部分数据,采用刷新浏览器方式。原创 2023-02-03 16:47:46 · 322 阅读 · 0 评论 -
php rsa加密openssl_private_encrypt(): key param is not a valid private key
在测试环境php7.3版本使用rsa生成公私秘钥,使用私钥加密出现报错openssl_private_encrypt(): key param is not a valid private key最终解决使用原始秘钥代码拼接完整 $rsaKey = $this->priKey; $rsaKey = "-----BEGIN PRIVATE KEY-----\n" . wordwrap($rsaKey , 64, "\n", true) . "\n-----END PRIVAT...原创 2022-04-26 13:31:15 · 3868 阅读 · 0 评论 -
php正则验证密码组合
废话不多说,直接上代码1: 校验纯数字:/^[0-9]{3,10}$/2: 校验纯字母/^[a-zA-Z]{3,10}$/3: 校验特殊字符/^[~!@#$%^&*()?]{3,10}$/4:校验数字字母'/^(?![0-9]+$)(?![a-z]+$)[0-9a-z]{3,10}$/i';5:校验数字字母特殊符号/^(?=.*[a-z])(?=.*\d)(?=.*[~!@#$%^&*()?])[a-z\d~!@#$%^&*()原创 2021-07-31 11:30:38 · 353 阅读 · 0 评论 -
php base64编码地址栏含有下划线解决
php传递参数如果是一个url,就需要转化下传输,使用php的bs64编码来进行编码,发现编码后的数据带有下划线,浏览器不识别只能进行转化改版bs64转码解码方法 。首先我们看下bs64的编码方法staticconstcharbase64_table[]={'A','B','C','D','E','F','G','H','I','J','K',...原创 2019-12-26 16:31:33 · 2107 阅读 · 1 评论 -
php文件下载
如果是一个下载链接直接处理$downloadUtrl = "http://test.cn/test/assets/images/12.png" (一) headers = get_headers($downloadUtrl, 1); $content_type = isset($headers['Content-Type']) ? $headers[...原创 2019-12-24 11:36:12 · 158 阅读 · 0 评论 -
laravel下常见的技巧
使用laravel过程中会发现一些有用的技巧,可以提高工作效率记录一下.(一) 页面跳转使用一次性缓存记录数据return redirect('http://a.com) ->withInput($request->only('name', 'site')) ->withErrors([ ...原创 2019-12-20 17:48:04 · 147 阅读 · 0 评论 -
php简单的敏感词过滤
最近在做网站的敏感词隐藏显示,找了好多方法,常见就是字符串替换和正则匹配,考虑到数据量不大,其实那种方法都可以满足需求的。我用字符串替换方法简单记录下$wordslist = array("你好","妹的","傻叉"); //敏感词列表$wordslist = array_combine($wordslist ,array_fill( 0,count($wordslist ), '*'))...原创 2019-12-06 17:58:34 · 213 阅读 · 0 评论 -
php文件读写操作
php操作文件读写 $file_user = 'userfiles.txt'; $data = array();读: if(file_exists($file_user) && count(file($file_user))>1){ $fp_r = @fopen($file_user, "r"); if ($fp_r)原创 2016-11-15 15:30:32 · 501 阅读 · 0 评论 -
百川云旺客服申请测试流程
最近做平台接入im系统,了解了阿里的免费阿里百川云旺客服产品,申请测试过程中,也走了不少的坑,这里记录下. (一)申请加入百川应用(首先要有一个淘宝账号登录)http://console.baichuan.taobao.com/userRegister.htm?from=(二)这里要新申请一个淘宝账号作为客服账号这里要注意验证码要原创 2016-11-02 14:18:23 · 5241 阅读 · 1 评论 -
对大数据量的处理思路
最近要用程序对百万级别的数据量进行处理,综合性能和代码执行时间,来考虑如何书写高质量的代码. 首先就是读数据的问题,由于数据量比较大,我们可以考虑根据唯一的主键id来取数据,这样速度比较快,而且数量不能太大,读取Mysql数据库,数据超过3万,速度就下降很明显了.我们根据id一次取出3000个数据进行处理,处理完,继续读取取出下一个3000条,这样直到数据处理完.如果数据量小于3万,我们原创 2016-11-12 14:30:09 · 666 阅读 · 0 评论 -
php常用的数组操作
(一)二维数组操作(1)二维数组变成一维数组foreach ($cate_arr_result_tmp as $p => $q){ foreach ($q as $i => $j) { $cate_arr_result[] = $j; }}或者$cate_arr_result = array_column($cate_arr_result_tmp ...原创 2016-10-13 16:39:47 · 287 阅读 · 0 评论 -
数据更新操作冒险记事
最近考虑到用户注册数据库有三个表的数据不统一,考虑要清理下数据和调整下表的数据,要写个脚本专门清理.开始清理工作了,首先是业务逻辑这个我们考虑到注册添加三个表数据(首先是这个是大坑的节奏),所以第一步业务逻辑一定要先搞确定和准确再行动.第二是代码编写,代码是按照业务逻辑来书写,这个只要有一定的编码功能一般不会出问题.第三就是测试要不断的在线下测试,毕竟是线上生产的数据,要在线下不断的进行测原创 2016-11-10 09:17:24 · 232 阅读 · 0 评论 -
什么是https
HTTP当你在浏览器输入一个网址 (例如 http://tasaid.com)的时候,浏览器发起一个 HTTP 请求,带着请求信息 (参见 HTTP Headers),连接到服务器,把请求信息递给服务器,服务器收到信息之后,解析相关的信息,然后进行处理,再返回浏览器请求的数据。简单来说是这么一个流程:小明 跟 浏览器爸爸 说我想要去中关村某个店家拿一些东西 (发起请求)转载 2016-10-18 09:05:59 · 310 阅读 · 0 评论 -
php操作mongodb类和实例
近来学习了mongodb,刚好是做php开发的,随便写了php操作mongodb的封装类.<?php/** * Created by PhpStorm. * User: lee * Date: 2016/10/24 * Time: 13:49 */namespace App\Http\Controllers\Api;use App\Http\Common\Ret原创 2016-10-26 10:50:27 · 1663 阅读 · 0 评论 -
php获取客户端真实ip
$_SERVER['REMOTE_ADDR']; //访问端(有可能是用户,有可能是代理的)IP$_SERVER['HTTP_CLIENT_IP']; //代理端的(有可能存在,可伪造)$_SERVER['HTTP_X_FORWARDED_FOR']; //用户是在哪个IP使用的代理(有可能存在,也可以伪造)如果有多个代理服务器可以有多个ip获取真实ip protected ...原创 2016-11-04 17:07:21 · 253 阅读 · 0 评论 -
php的常用的正则判断
(一)判断汉字(2-8位的纯汉字)if(preg_match('/^[\x{4e00}-\x{9fa5}]{2,8}+$/u',$n)){}原创 2016-10-13 17:11:25 · 313 阅读 · 0 评论 -
php中常用的数组操作
在工作中对数据进行统计时,要用到php的数组操作,特此总结下.(1)得到数组中每个元素的个数array_count_values(2)合并多个数组array_merge原创 2017-01-25 14:43:31 · 238 阅读 · 0 评论 -
php curl支持302域名跳转
$url = 'http://sdk.x.com/index.php/callback?sign=a515afa7c4fd539765d53a54d5166f69¬ify_time=2017-06-19 16:32:55';$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_转载 2017-06-19 17:11:29 · 3948 阅读 · 0 评论 -
php请求附件上传请求第三方接口
socket/* * 附件上传到金融接口 */class SocketUpload{ private $host = ''; private $port = 80; private $errno = null; private $errstr = null; public $timeout = 5; public $url ...原创 2019-09-26 15:56:46 · 913 阅读 · 0 评论 -
laravel下数据分段导出
最近要导出一批日志数据,正常的流程是从数据库取出数据。循环遍历处理数据得到结果,导出到excel。貌似流程很完美,没有问题,但是数据量过大的时候,就会出现内存不够用的情况。这种情况只能把数据分段取出处理。laravel已经给我们提供了这样的功能,下面我们来实现吧。 $num = 500; //分段数量 $publishData =[]; ...原创 2018-11-07 09:24:18 · 1229 阅读 · 0 评论 -
http的session机制
一:什么是sessionsession叫做会话,在http请求中来识别和不同客户端的一种状态,常用在web登录保存客户端状态使用.二:http通信登录过程客户端登录以后,服务端生成唯一session id,和相应的登录用户信息,把session id返回给客户端,客户端开启cookie的直接保存在cookie里面,没有cookie的可以携带在url中每次访问通过session id和服...原创 2018-09-20 13:34:32 · 887 阅读 · 0 评论 -
php 7 开启opcache
php 5.5以后php默认自带zend opcache,加速php性能.Opcache是一种通过将解析的PHP脚本预编译的字节码存放在共享内存中来避免每次加载和解析PHP脚本的开销,解析器可以直接从共享内存读取已经缓存的字节码,从而大大提高PHP的执行效率一:开启opcacheopcache.enable = 1 查看命中率二:性能对比开启前 接口测试...原创 2018-09-07 10:52:51 · 2234 阅读 · 0 评论 -
php的正则表达式
php的正则表达式用于匹配满足规则的字符串.(一)首先是匹配表达式的组成模式和待匹配字符串模式需要有分隔符闭合包裹, 分隔符有/或#或~都可以.(二)其次是模式的书写模式一般由一个或多个元字符的组合形成,要牢记常用的元字符如^以什么开头,$以什么结尾等.(三)匹配实例 (1)简单匹配preg_match('#ab$#','avvvab') 匹配以ab结尾(...原创 2018-07-16 17:51:56 · 170 阅读 · 0 评论 -
php实战C扩展之数组
近来看了php的c扩展书写,尝试接入数组处理,学会了几个HashTable处理函数记录如下:zend_hash_next_index_insert 插入数据(数字数组或者关联数组);zend_hash_add 插入关联数组zend_hash_index_update 数字数组或者关联数组zend_hash_update 更新关联数组代码: zval *arr, *prefix, *en...原创 2018-04-25 10:21:32 · 614 阅读 · 0 评论