php技巧

PHP实现网络请求的方法总结

2022-06-27
一.分析php发送网网络请求的方法 对于php发送网络请求,我们最常用的请求就是curl,有时我们也会用到file_get_contents函数发送网络请求,但file_get_contents只能完成一些间单的网络请求,稍复杂的就无法完成,例如文件上传,cookies,验证,表单提交等,用php的curl可以使用URL的语法模拟浏览器来传输数据,因为它是模拟浏览器,因此它同样支持多种协议,FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及

基于PHP实现微博热搜实时监控平台

2022-06-15
目录 背景 一.整体思路 二.数据爬取 1.获取HTML 2.提取数据 3.返回数据 三.数据可视化 1.画柱状图 2.ajax请求数据 四.效果展示 写在最后 背景 在学习.“脱发”之余,便是去微博看看有没有发生什么有趣的事情,或是了解一下正在发生着哪些“大事”,亦或是某些让我久久不能平复的事…Whatever~ 因为重点并不是这个 重点是,当我去搜微博热搜的时候,是这样的: 界面需要一直手动刷新,而且我简单搜了一下,似乎是没有相关的实时统计图的,于是我尝试着自己写一个.(ps.要是有哪位大佬

PHP实现抽奖系统的示例代码

2022-06-14
目录 一.随机抽奖 二.概率抽奖 三.内定抽奖 一.随机抽奖 随机抽奖当然是最公平的抽奖,就是当用户抽奖时随机返回抽奖结果 这种结果完全随机,不受人为控制,中奖全凭借运气 先定义奖池拥有的奖品,用户进来抽奖后,随机返回奖池中的奖品 <?php $prize = ['60寸大彩电', 'iphone13', '戴森吸尘器', '索尼微单', 'VR眼镜', '谢谢参与']; // 当有用户进来抽奖,进行随机抽奖 shuffle($prize); // 抽奖结果 print_r($prize[0])

php性能优化进阶不要在for循环中DB操作

2022-06-11
目录 前言 场景说明 解题思路 代码示例: 性能对比 反思总结 前言 如何提高程序运行速度,减轻服务器压力是服务端开发必须面对的一个问题. 简单且朴素的原则:不要在for循环中操作DB,包括关系型数据库和NoSql. 我们应该根据自己的业务场景,在for循环之前批量拿到数据,用尽量少的sql查询批量查到结果. 在for循环中进行数据的匹配组装. 上一篇文章 性能优化反思:不要在for循环中操作DB ,被推荐到首页也收到了大家的互动评论,再接再厉,进阶一版. 说明:继续上一篇文档的demo整理,不

php性能优化之不要在for循环中操作DB

2022-06-10
目录 前言 场景说明 举例说明 进一步优化 性能对比 前言 如何提高程序运行速度,减轻服务器压力是服务端开发必须面对的一个问题. 简单且朴素的原则:不要在for循环中操作DB,包括关系型数据库和NoSql. 我们应该根据自己的业务场景,在for循环之前批量拿到数据,用尽量少的sql查询批量查到结果. 在for循环中进行数据的匹配组装. 场景说明 业务在多个情景下需要获得用户的详细信息,有点可以通过查询用户表直接获取到,有的需要查询关联关系表获取到,有的只保存了关联的id,并没有单独创建关联关系表

php实现百度云加速API及SDK封装

2022-06-09
百度云加速API参考文档 https://su.baidu.com/help/index.html#/7_kaifazhinan/2_APIcankao-NEW/2_wangzhanjieru/2.1.1_tianjiayuming.md 注意: 官方接口v3和v31有些参数并未实现,或返回的内容和文档描述不符合,所以在封装时交叉使用了2个版本的API,并非码字错漏. /** * Author: rehiy <https://www.rehiy.com> * Update: 2021-04-1

php伪协议实现命令执行详情

2022-06-09
目录 1.file://协议 2.php://协议 3.data://协议 4.zip:// & bzip:// & zlib:// 协议 总结 1.file://协议 条件: allow_url_fopen : off/on allow_url_include: off/on 作用: 用于访问本地文件系统,在ctf中通常用来读取本地文件 在include() / require() / include_once() / require_once() 参数可控的情况下,即使导入非.php文

PHP实现多张图片上传功能的示例代码

2022-06-08
首先要知道这个函数 move_uploaded_file(); 接下来是我们的input框,和我们的html页面 这里我们是增加的input框我们也可以写写一个属性    multiple="multiple"   这样就可以ctrl多选图片了 <html> <head><title>多个文件上传表单</title></head> <body> <style> form{ margin: 20px; p

PHP实现常见排序算法的示例代码

2022-06-05
目录 1.冒泡排序 2.选择排序 3.快速排序 4.插入排序 补充 1.冒泡排序 两两相比,每循环一轮就不用再比较最后一个元素了,因为最后一个元素已经是最大或者最小. function maopaoSort ($list) { $len = count($list); for ($i = 0; $i < $len - 1; $i++) { for ($j = 0; $j < $len - $i - 1; $j++) { if ($list[$j] > $list[$j + 1]) { $

如何基于PHP实现微信小程序pdf文件的预览功能

2022-05-27
目录 知识点 问题描述 探索过程 实现思路 最终效果 实现步骤 总结 知识点 微信小程序预览pdf文件 这都是一些实际项目的开发经验,不是东拼西凑的网上水文.如果这篇文章帮到了你,麻烦动动你发财的小手给点个赞,留下个评论. 问题描述 前段时间文库类微信小程序开发中遇到个问题,就是要在小程序中预览阿里云OSS中的pdf文件.微信官方给的方案就一个,就是把文档缓存到本地然后用资源管理器打开. 这样写问题很明显,pdf文件小的话还可以,当pdf文件很大的时候,加载速度就会很慢.而且我只是需要预览单纯的

PHP操作XML的教程详解

2022-05-26
php操作XML <?xml version="1.0" encoding="utf-8"?> <article> <item> <title size="1">title1</title> <content>content1</content> <pubdate>2009-10-11</pubdate> </item> <

PHP实现生成二维码的示例代码

2022-05-25
目录 前言 1.目前有2种类型的二维码 2.用户扫描带场景值二维码时,可能推送以下两种事件 3.创建二维码ticket 4.临时二维码请求说明 5.永久二维码请求说明 6.临时二维码和永久二维码生成实现的代码 前言 为了满足用户渠道推广分析和用户账号绑定等场景的需要,公众平台提供了生成带参数二维码的接口.使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送. 1.目前有2种类型的二维码 临时二维码,是有过期时间的,最长可以设置为在二维码生成后的30天(即2592000

一文搞懂PHP中的抽象类和接口

2022-05-24
目录 一.抽象类 1.定义 2.应用场景 3.入门代码 4.细节 5. 代码分解 二.接口 1.定义 2. 应用场景 3.入门代码 4.注意细节 三.类和接口之间关系 一.抽象类 1.定义 用abstract 关键字来修饰一个类时,这个类就叫抽象类. 用abstract 关键字来修饰一个方法时,这个方法就是抽象方法. 2.应用场景 在实际开发中,我们可能有这样一种类,是其它类的父类,但是它本身并不需要实例化,主要用途是用于让子类来继承(规定子类),这样可以到达代码复用. 同时利于项目设计者来设计

PHP实现守护进程的示例代码

2022-05-11
目录 前言 成为守护进程的步骤 实现 说明 创建子进程并退出父进程 创建新的会话 重设文件掩码 改变工作目录 关闭标准输入输出 其他 注意事项 前言 写 PHP CLI 程序的老司机们可能经常会写一些常驻进程,比如消息队列消费者进程,这些进程会一直运行,除非要发版,不然一般不会重启的,所以程序程序是不可能由我们通过 ssh 登录到服务器上通过终端来直接启动的(因为一旦断开 ssh 进程就退出了),常见的做法就是用 systemd 或者 supervisor 来使其成为 守护进程,这样进程就可以一

PHP利用雪花(SnowFlake)算法生成唯一ID

2022-05-10
目录 一.雪花算法原理解析 1. 分布式ID常见生成策略 2. 雪花算法的结构 二.PHP源码实现案例 1.demo1 2.demo2 这个算法的好处很简单可以在每秒产生约400W个不同的16位数字ID(10进制) 一.雪花算法原理解析 1. 分布式ID常见生成策略 分布式ID生成策略常见的有如下几种: 数据库自增ID. UUID生成. Redis的原子自增方式. 数据库水平拆分,设置初始值和相同的自增步长. 批量申请自增ID. 雪花算法. 百度UidGenerator算法(基于雪花算法实现自定

PHP实现RabbitMQ消息列队的示例代码

2022-05-10
目录 业务场景 1.首先部署好thinkphp6框架 2.安装workerman扩展 3.生产者 4.消费者 5.整体测试 业务场景 项目公司是主php做开发的,框架为thinkphp.众所周知,php本身的运行效率存在一定的缺陷,所以如果有一个很复杂很耗时的业务时,必须开发一个常驻内存的程序.首先我想到了php的workerman与swoole,但是这里应上面的标题哈,想将耗时任务交给另一个服务器,同时列队处理.所以这里我想独立部署一个rabbitMQ服务器用于处理列队任务. 当rabbitM

基于PHP实现原生增删改查的示例代码

2022-04-28
目录 一.代码 1.sql 2.列表页(index.php) 3.delete.php 4.update.php 5.create.php 二.效果图 一.代码 1.sql -- phpMyAdmin SQL Dump -- version 4.5.1 -- http://www.phpmyadmin.net -- -- Host: 127.0.0.1 -- Generation Time: 2022-03-19 19:16:40 -- 服务器版本:10.1.13-MariaDB -- PHP

基于PHP制作通用的Excel导入程序

2022-04-22
昨天和两个做开发的朋友聊天,对于我还在使用LayUI感到奇怪,我也没有多解释,毕竟LayUI对于做一些中小型的开发还是不错的,前端的框架中,熟悉了一个其他的也差之不多.但LayUI的资料不细致是个很大的缺憾. 用户提出有一个Excel表的记录要导入,这个是基本要求,肯定要满足. 2006年,我用PowerBuilder写过一个通用的导入程序,程序上也不难. 用前端框架来完成会有一点麻烦,主要在于 1.数据回显 如果是让用户选择一个Excel文件然后就直接入库,那程序就太简单了,问题是要先让用户看

PHP实现文件上传和下载的示例代码

2022-04-20
目录 1.效果图 2.首先是封装好的图片类(缩放及生成水印) 1.GDBasic.php 2.Image.php 3.ajax类封装文件 1.index.php 2.图片相关功能处理 3.封装好的文件上传类 4.搜索功能实现 4.最后数据库格式 1.效果图 2.首先是封装好的图片类(缩放及生成水印) 1.GDBasic.php <?php /** * GDBasic.php * description GD基础类 */ namespace test\Lib; class GDBasic { pr

详解如何利用PHP实现RPC

2022-04-19
目录 1.什么是RPC 2.从通信协议的层面 3.从不同的开发语言和平台层面 4.从调用过程来看 5.常见的几种通信方式 6.php实现简单的rpc 1.目录结构 2.rpc服务端 3.rpc 客户端 4.提供服务的文件 5.效果 7.RPC的注意事项 1.什么是RPC RPC全称为Remote Procedure Call,翻译过来为“远程过程调用”.主流的平台中都支持各种远程调用技术,以满足分布式系统架构中不同的系统之间的远程通信和相互调用.远程调用的应用场景极其广泛,实现的方式也各式各样.