
PHP
文章平均质量分 76
ato'ng
除了工作就是学习
展开
-
Redis 集群在PHP中的使用
predis 基础使用文档https://packagist.org/packages/predis/predisPHP 操作集群代码演示1. 安装 predis:composer require predis/predis2. Redis 基础使用:// 默认值为 127.0.0.1:6379$client = new Predis\Client();$client->set('foo', 'bar');$value = $client->get('foo')原创 2021-02-01 16:06:36 · 528 阅读 · 0 评论 -
php 开发常用文档
thinkphp-queue 笔记https://github.com/coolseven/notes/blob/master/thinkphp-queue/README.mdRabbitMQ 中文文档-PHP版https://xiaoxiami.gitbook.io/rabbitmq_into_chinese_php/原创 2021-01-26 09:57:11 · 367 阅读 · 0 评论 -
Hyperf 开发技巧
1. 快速启动 Hyperf 服务启用服务命令另存为 hyperf.bat 文件中docker exec -it f0 /bin/sh -c "cd hyperf-skeleton/ && php bin/hyperf.php server:watch"此时,双击该文件即可启用 hyperf 服务,在 PHPStorm 上添加该文件作为脚本快捷键即可一键启动服务,参考 PHPstorm快速启用 Hyperf2. PHPStorm 识别注解File -> Sett原创 2020-11-30 10:24:46 · 1022 阅读 · 0 评论 -
Windows 环境下开发 Hyperf
用户在APP内发布帖子,且在帖子下方支持评论、回复、点赞等功能,针对点赞需求的详细分析:需求:需根据点赞数排序帖子列表;需根据用户标识用户点赞状态;需记录用户最近点赞了哪些帖子;需记录帖子有哪些用户点赞过;问题:因为点赞是写操作,在点赞很频繁的情况下,会有大量的写操作,严重影响了数据库的性能。解决方案1:使用Redis缓存记录用户点赞状态;方案1导致的新问题1:点赞数据保存到Redis时,需求1 根据点赞数排序帖子列表时,SQL语句order by失效;.原创 2020-11-26 10:31:12 · 1904 阅读 · 1 评论 -
模仿 ThinkPHP - db 类的封装实例
模仿 ThinkPHP - db 类的封装实例:class Db extends \mysqli{ // 实例对象 protected static $_instance = null; // mysql配置 protected static $options = [ // 服务器地址 'host' => '127.0.0.1', // 数据库名 'database' => 'test',原创 2020-05-28 23:25:31 · 775 阅读 · 0 评论 -
PHP 技巧 * 附近的人功能实现
一、准备授权获取用户的经纬度并存入数据库(lng 字段、lat 字段)。二、查询1. 原生查询SELECT *, CONVERT ( 2 * 6378.137 * ASIN( SQRT( POW( SIN( 3.1...原创 2020-04-16 18:22:50 · 1349 阅读 · 0 评论 -
PHP 技巧 * SVG 保存为图片(分享图生成)
一、准备准备 svg 文件:这一步骤通常由设计完成,而案例是通过 SVG 在线编辑器 生成的; 确保你的环境支持使用 Imagick扩展; 如果是Linux服务器,可能需要按照必要字体,否则中文可能无法正常显示;二、过程:test.svg<svg width="500" height="300" xmlns="http://www.w3.org/2000/svg">...原创 2020-04-05 21:58:15 · 1232 阅读 · 0 评论 -
mysql 技巧 * 总分相同则依次比较科目A、科目B ..
前提:MySQL 数据表中存储多个用户多个科目的成绩,每个用户的每个科目都记录为一条数据,大致结构如下:需求:统计成绩排名,如总分相同则依次比较科目A、科目B .. 的成绩。eg:总成绩相同,则比较 科目A成绩,高分者排名靠前,如果 科目A 也相同则比较 科目B 成绩,依次比下去。我的解决:创建统计表,记录数据如下(将每个科目的得分都 + 50 使之成为位数相同的...原创 2020-04-05 13:55:50 · 573 阅读 · 0 评论 -
PHP 技巧 * 置顶功能(指定数据排在前面)
一、如果数据存储于 MySQL 数据库方法1. 直接使用 ORDER BY 实现:SELECT * FROM `infos` ORDER BY id IN (4,5) DESC;方式2. 先查询置顶的数据,再合并未置顶数据:SELECT * FROM `infos` WHERE id in (4,5) UNIONSELECT * FROM `infos` WHERE id...原创 2020-04-03 14:57:49 · 2225 阅读 · 1 评论 -
PHP 技巧 * curl 抓取抖音无水印视频
一、所需工具复制抖音分享的地址,如下:#在抖音,记录美好生活#两位影帝强强联手,梁家辉曾说过有发哥在我怎样都要内敛一点,发哥做为前辈还提携过我 https://v.douyin.com/7J48Rf/ 复制此链接,打开【抖音短视频】,直接观看视频!二、演示地址http://dy.kder.top/;(抓了别人个前段)三、原理抖音app的视频包括播放视频地址(无水印)和下...原创 2020-03-24 14:35:43 · 5288 阅读 · 1 评论 -
PHP 技巧 * GD 库画表格图片演示
一、数据准备下载字体;二、示例代码:<?php// 标题文本 $title = "我是标题";// 数据$data = [ ["id" => "ID", "username" => "用户名", "score" => "得分"], ["id" => 1, "username" => "给你最好的我丶", "score" =&...原创 2020-03-19 17:29:38 · 1638 阅读 · 0 评论 -
PHP 技巧 * 导出 excel 操作
一、composer 安装 PHPExcel以ThinkPHP5.1 为例,在根目录使用composer 得到 phpexcel 扩展类库(自动保存至 vendor 文件夹):composer require phpoffice/phpexcel二、导出示例: public function testExcel(){ $data = [ ...原创 2020-03-17 18:50:55 · 522 阅读 · 0 评论 -
PHP 技巧 * echarts 实现指定日期统计图
以 ThinkPHP 为例,其效果示例图如下:>>> 控制器代码:public function stat() // 指定日期 $day = input('day') ?: date('Y-m-d',time()); // 单位 1 /分、 2 /时 $is_min = input('is_min') ?: 2; retur...原创 2020-03-17 17:46:22 · 827 阅读 · 0 评论 -
PHP 技巧 * 根据二维数组中指定元素排序
方法封装:if (!function_exists('sort_for_arrays')) { /** * 二维数组根据某个字段排序 * @param array $array 要排序的数组 * @param string $keys 要排序的键字段 * @param string $sort 排序类型 SORT_ASC SORT_D...原创 2020-03-17 10:59:51 · 498 阅读 · 0 评论 -
PHP 技巧 * 获取所有自定义常量
以 ThinkPHP5.0 框架为例,获取其定义的所有常量:get_defined_constants(true)["user"];以上例程的输出类似于:扩展:get_defined_constants—返回所有常量的关联数组,键是常量名,值是常量值。<?phpdefine("MY_CONSTANT", 1);print_r(get_defined_const...原创 2020-03-05 15:51:03 · 645 阅读 · 0 评论 -
高性能 PHP7 * 压力测试
应用程序在经过开发、测试、调试和分析优化之后,就可以投入生产了。然而,在部署到生产环境之前,有必要对应用程序进行压力/负载测试。压力测试可以提供运行应用程序的服务器在单位时间内处理请求数量的评估结果,根据这个评估结果,我们可以优化程序、Web服务器、数据库和缓存,进而获得更好的性能。本章包括以下几方面内容:Apache JMeter ApacheBench (ab) Siege ...原创 2020-01-06 16:09:37 · 720 阅读 · 0 评论 -
高性能 PHP7 * 调试和分析
每个程序开发者在实际开发过程中都会遇到种种问题,但却不知道具体发生了什么问题,也不知道这些问题为何会发生。大多数时候可能是逻辑或数据的问题,这些问题通常难以解决,而调试是一种找出症 结所在并解决它们的手段。同样地,我们经常需要弄清楚一个脚本程序消耗了多少资源,包括内存消耗、 CPU以及执行时间。本章主要包括以下内容:Xdebug 使用Sublime Text 3调试 使用Eclipse...原创 2020-01-06 15:12:18 · 526 阅读 · 0 评论 -
高性能 PHP7 * 提升数据库性能
数据库在动态网站中扮演着一个关键的角色,所有流入流出的数据都会和数据库进行交互。因此,如果PHP应用的数据库没有进行较好的设计或优化,其性能将会受到非常大的影响。MySQL数据库MySQL安装完成后的默认设置所提供的性能并不是最优的,我们总有办法对其进行进一步优化,提升 性能。切记,数据库设计是影响性能的关键因素,设计很糟糕的数据库会对整个性能造成严重影响。查询缓存(Query Cac...原创 2020-01-03 17:23:30 · 644 阅读 · 0 评论 -
高性能 PHP7 * 应用性能提升
为了提升性能,PHP7 已经完全基于 PHPNG进行重写,不过依然有很多其他的方法可以用来进一步提升 PHP7 性能。Nginx 与 Apache目前有很多 HTTP Server 软件可供使用,目前最流行的是 Nginx 与 Apache。Apache:完整,稳定。每一个请求都由一个线程或进程处理,导致开销大,高并发情况下其性能低下的问题凸显。Nginx:轻量,异步。由于请求...原创 2020-01-02 15:41:50 · 769 阅读 · 0 评论 -
高性能 PHP7 * 新特性
PHP7 具有很多用于编写高性能、高效代码的新特性,同时也剔除了一些历史版本中过时的特性。类型声明默认情况下,所有的PHP文件都处于弱类型校验模式。<?php// 1:默认值,表示严格类型校验模式,不符则抛 Fatal error// 0:表示弱类型校验模式。declare(strict_types=1);// 规定形参、返回值类型function sum(int ...原创 2019-12-17 01:20:42 · 683 阅读 · 1 评论 -
Duang~MySQLi 扩展库来袭
PHP-MySQL 函数库是 PHP 操作 MySQL 资料库最原始的扩展库,PHP-MySQLi 的 i 代表 Improvement ,相当于前者的增强版,也包含了相对进阶的功能,另外本身也增加了安全性,比如可以大幅度减少 SQL 注入等问题的发生。开启扩展mysqli扩展默认并不会开启,为此我们需要找到 php.ini 文件,并且需要确认删除了[PHP_MYSQLI]部分中的...原创 2019-12-10 22:28:09 · 685 阅读 · 0 评论 -
搭建了一个自用的PHP框架
代码简单,功能简便,PHP 新手也能看懂。Git仓库地址:https://gitee.com/zhongbaitong/mini-frame.git以下是搭建过程做的一个小记录:1.使用 composer 实现文件自动加载比起 spl_autoload_register() ,显然 composer 更简单跟强大,参考文章:https://www.cnblogs.c...原创 2019-11-29 17:07:16 · 846 阅读 · 0 评论 -
PHP7.3 及 swoole 扩展的安装过程(centos7.3)
yum 安装 PHP7.31、首先安装 EPEL 源:yum install epel-release# Extra Packages for Enterprise Linux 。EPEL是一个比官方rpm包更丰富、版本相对更高的额外第三方源。2、安装 REMI 源:yum install http://rpms.remirepo.net/enterprise/remi...原创 2019-09-16 21:51:49 · 3518 阅读 · 0 评论 -
PHP7 安装 zip 扩展的过程(CentOS7 )
PECL:The PHP Extension Community Library是php的扩展库。1、准备 php 开发包和扩展库:yum install php-devel php-pear2、安装php的zip扩展:perl install zip3、开启扩展( vimphp.ini ):zlib.output_compression = Onextensio...原创 2019-09-21 00:47:55 · 9060 阅读 · 0 评论 -
RBAC(Role-Based Access Control )基于角色的访问控制(TP3.23)
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一般都是多对多的关系。理论上的知识就不啰嗦了,本文章将要记录我在实现RBAC权限分配的主要思路和代码,注意,代码是使用thinkPH...原创 2017-08-02 16:02:36 · 7023 阅读 · 0 评论 -
一行代码解决 ThinkPHP5 压缩水印图片后透明背景变成白色背景的问题
需求:在用户上传图片时添加图片水印,水印图大小需要根据用户上传的图片大小变化;思路:上传图片时,使用TP5封装好的图片处理类对上传的图片进行添加水印,水印图需要根据上传图片的大小进行适当压缩;问题:水印图压缩之后,原本透明底变成白色底;解决:小改tp5封装的图片处理类的压缩方法;过程:定位至:thinkphp\labrary\think-image\src->crop(...原创 2019-03-07 21:38:01 · 4661 阅读 · 0 评论 -
Windows 下搭建PHP开发环境(Apache2.4+MySQL5.7+php7.1.5)
前言在 Windows 操作系统上配置 PHP 开发环境的两种方法。第一种方法是按照集成包,如wampserver、apmserv、xampp、PHPWAMP等。本次尝试着对每个软件(eg:Apache、MySQL、PHP) 包进行编译安装1、Apache 安装配置(1)获取 Apache点击该链接https://www.apachelounge.com/download/;在...原创 2017-06-03 16:36:33 · 2394 阅读 · 0 评论 -
PHP 基础知识总结
PHP是什么?PHP是一种运行在服务器端(SSI)、嵌入到HTML、的脚本语言。服务器端语言:在网页传送到客户端前将之解释并执行完毕,简单来说,我们是看不到PHP代码的,我们看到的都是HTML解析之后的代码,而我们则是利用PHP操控HTML,使网页由静态转为动态效果。嵌入到HTML:使用特殊的标识符嵌入到HTML代码中,提交网页之后在服务器中运行完成,生成HTML到嵌入的位置中返回给客...原创 2017-06-06 09:51:27 · 6964 阅读 · 3 评论 -
TP5 跑路代码..
跑路代码: public function test(){ $input = input(); $b = input('b'); $res = $input['a']::$b(input('c')); dump($res); }postman请求:执行结果:\think\Db::execute(...原创 2019-01-08 02:03:51 · 978 阅读 · 0 评论 -
Swoole 快速起步:创建 WebSocket 服务器(聊天室)
和 HTTP协议一样,WebSocket协议也是建立在TCP/IP协议基础上的协议,但不一样的是 HTTP 协议 为单向协议,即浏览器只能向服务器请求资源,服务器才能将数据传送给浏览器。WebSocket协议是一种双向通信协议,在建立连接后,WebSocket服务器和 Browser/UA 都能主动的向对方发送或接收数据!WebSocket 服务器脚本1. 创建脚本:...原创 2019-09-22 18:36:53 · 1263 阅读 · 0 评论 -
PHP 开发实时聊天功能的基本思路 - GatewayWorker
基本思路1、下载 GatewayWorker下载GatewayWorker,解压到任意位置,其结构如下:.├── Applications // 这里是所有开发者应用项目│ └── YourApp // 其中一个项目目录,目录名可以自定义│ ├── Events.php // 开发者只需要关注这个文件│ ├── start_gateway....原创 2019-07-17 14:15:21 · 3561 阅读 · 0 评论