
PHP
文章平均质量分 68
Super乐
闭上自己的嘴,抬起自己的腿,走自己的人生路。
展开
-
PHP基础知识 - PHP魔术方法
PHP常用魔术方法原创 2023-02-03 16:48:11 · 705 阅读 · 0 评论 -
PHP基础知识 - PHP函数大全
PHP函数大全原创 2023-02-03 16:38:57 · 1433 阅读 · 0 评论 -
PHP基础知识 - PHP面向对象OOP
PHP基础知识 - PHP面向对象OOP原创 2023-02-02 18:25:17 · 1173 阅读 · 0 评论 -
PHP设计模式
在平时写代码过程中,构建对象最常用的方式是 new 一个对象。每 new 一个对象,相当于调用者就知道了一个类,增加了类与类之间的联系,不利于程序的松耦合。更好的实现方式是有一个水果工厂,我们告诉工厂需要什么种类的水果,水果工厂将我们需要的水果制造出来给我们就可以了。工厂方法模式是简单工厂的升级版,在原有的基础上对工厂进行一个抽象的升级,我们不再提供一个统一的工厂类来创建所有的对象,而是针对不同的对象提供不同的工厂。当我们需要一个苹果时,我们需要知道苹果的构造方法,需要一个梨子时,需要知道梨子的构造方法。原创 2023-01-19 15:49:25 · 2022 阅读 · 0 评论 -
MySQL加索引语句不加锁:ALGORITHM=INPLACE, LOCK=NONE
MySQL加索引语句不加锁:ALGORITHM=INPLACE, LOCK=NONE原创 2022-08-03 17:15:56 · 1051 阅读 · 0 评论 -
Git冲突:Please commit your changes or stash them before you merge
当执行 git pull 命令时,提示错误如下:Updating bb954c5..02de6f1error: Your local changes to the following files would be overwritten by merge: app/Services/TongChengRedService.phpPlease, commit your changes or stash them before you can merge.Aborting...原创 2022-01-21 11:26:41 · 1453 阅读 · 0 评论 -
PHP递归函数
数据格式:$array = array( array('id' => 1, 'pid' => 0, 'name' => '河北省'), array('id' => 2, 'pid' => 0, 'name' => '北京市'), array('id' => 3, 'pid' => 1, 'name' => '邯郸市'), array('id' =>原创 2021-11-02 18:13:27 · 836 阅读 · 0 评论 -
微信支付-付款到零钱开发流程
微信官方说明地址:【微信支付】付款开发者文档微信支付付款,提供企业向用户付款的功能,支持企业通过API接口付款,或通过微信支付商户平台网页功能操作付款https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_1第一步:微信商户平台配置第二步:接口对接接口调用请求说明:第三步:接口开发(这里使用的是PHP)当时开发时,就写了一个类作为服务。代码可以直接使用。说明:里面的配置项需要换成你们自己的。原创 2021-10-27 17:07:17 · 967 阅读 · 0 评论 -
PHP生成新的apk包-(二)
在apk包中指定的目录中增加文件,直接贴代码:private function apkZip() { //apk文件路径 $apk = storage_path( 'logs/haohuan_release.apk' ); //临时文件路径 $tmpPath = storage_path( 'logs/' ); // 生成临时文件,第二个参数自定义 $file = tempnam( $tmp.原创 2021-10-26 17:23:03 · 797 阅读 · 0 评论 -
PHP自定义apk渠道包-(一)
原始的apk包解压得到的目录以及文件如下:第一步:通过PHP的 zip 扩展处理扩展包,代码如下:这个 ZipArchive 类,框架自带的都有直接实例化即可。private function phpZip() { $root_path = storage_path( 'logs/haohuan_release.apk' ); $save_dir = storage_path( 'logs/' ); $new_name = 'tes.原创 2021-10-26 17:03:30 · 730 阅读 · 0 评论 -
PHP获取apk包的信息-(一)
第一步:解析apk使用扩展包:php-apk-parse扩展包的下载地址:GitHub - tufanbarisyildirim/php-apk-parser: Read basic info about an application from .apk file.Read basic info about an application from .apk file. - GitHub - tufanbarisyildirim/php-apk-parser: Read basic info about原创 2021-10-26 16:51:36 · 810 阅读 · 0 评论 -
教你不用梯子也可提高访问github的速度
第一步。打开域名解析网址:The Best IP Address, Email and Networking Tools - IPAddress.comYou get the best results with IPAddress.com's IP Address Lookup, WHOIS, Email Tracing, Networking Tools and much more!https://www.ipaddress.com/打开之后,分别搜索以下3个域名:第一个:github.com原创 2021-10-26 10:35:36 · 16379 阅读 · 21 评论 -
Laravel 5 & PHP 7 发送邮件问题解决方案
错误提示:Swift_IoException: Connection to ssl://smtp.163.com:465 Timed Out in /var/local/loan-ad/loan-ad202107051522/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php:166有两个解决方案:一个是使用 SSL 协议发送邮件,另一个是不使用 SSL,只使用普通的 25 号端口去发送邮件第原创 2021-07-07 11:41:31 · 537 阅读 · 0 评论 -
JWT 超详细分析
本篇文章不讨论 Laravel 中 JWT 这个怎么使用,要这方面内容的可以看我另一篇文章 JWT 完整使用详解 。在此我要从一个更深的层次来探讨 JWT 在实际运用中的使用以及其优缺点,以及 JWT 和 Oauth 2.0 这两者到底有什么差别和联系。首先我们从 Token 入手,再联系到 JWT,然后分析 JWT 的优缺点和使用场景,最后再联系到 Oauth2.0。一、Tokentoken 是一串字符串,通常因为作为鉴权凭据,最常用的使用场景是 API 鉴权。1. API 鉴权那么翻译 2021-06-10 18:10:21 · 274 阅读 · 0 评论 -
2023PHP面试题(含答案)
1. 数据库设计经验,为什么进行分表?分库?一般多少数据量开始分表?分库?分库分表的目的?什么是数据库垂直拆分?水平拆分?分区等等一:为什么要分表当一张表的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表。这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能会更加糟糕。分表和表分区的目的就原创 2021-06-03 17:49:44 · 2173 阅读 · 0 评论 -
yum安装 lnmp (linux+nginx+php7.1+mysql5.7)
1、第一步先更新yum update 2、yum安装nginx安装nginx最新源:yum localinstall http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpmyum repolist enabled | grep "nginx*"安装nginx:yum -y install nginx启动nginx:service nginx start设置ng.原创 2021-01-25 18:28:34 · 201 阅读 · 0 评论 -
超清晰-数据结构之线性表
鸟哥说,坚持学习基础才能有出人头地的一天。不能只专注于练武功了,内功也得练。本篇文章是讲数据结构的第一篇,跟着书好好再过一篇基础。一、线性表线性表是n个数据特性相同的元素的组成有限序列,是最基本且常用的一种线性结构(线性表,栈,队列,串和数组都是线性结构),同时也是其他数据结构的基础。对于非空的线性表或者线性结构的特点:(1)存在唯一的一个被称作“第一个”的数据元素;(2)存在唯一的一个被称作“最后一个”的数据元素;(3)除第一个外,结构中的每个数据元素均只有一个前驱;(4)转载 2021-01-13 12:00:46 · 126 阅读 · 0 评论 -
PHP的 cow 和 zval 容器
什么是cow(copy on write)?这是PHP一种内存优化的手段,可以节省内存空间的浪费,我们可以看看下面的例子。 <?php $a = range(0,20); var_dump(memory_get_usage()); $b = $a; var_dump(memory_get_usage()); $b = range(0,20); var_dump(memory_get_usage()); 输出结果是:我们可转载 2021-01-13 11:59:30 · 111 阅读 · 0 评论 -
详解 websocket 协议
一、websocket是什么?websocket 是一个基于应用层的网络协议,建立在tcp 协议之上,和 http 协议可以说是兄弟的关系,但是这个兄弟有点依赖 http ,为什么这么说呢?我们都知道 HTTP 实现了三次握手来建立通信连接,实际上 websocket 的创始人很聪明,他不想重复的去造轮子,反正我兄弟已经实现了握手了,我干嘛还要重写一套呢?先让它去冲锋陷阵呢,我坐收渔翁之利不是更香 吗,所以一般来说,我们会先用 HTTP 先进行三次握手,再向服务器请求升级为websocket 协议,..原创 2021-01-13 11:55:56 · 1004 阅读 · 1 评论 -
如何使用PHP多进程开发
1.使用多进程的一些场景重复且耗时的一些操作,例如 发邮件,处理文件,或者是某些批量处理独立个体的事情。例如博主本次用到的场景是批量同步实体信息的操作,每个账户的实体是独立的,量级比较大,且处理逻辑有较多的网络通讯消耗和数据库查询。导致脚本执行经常卡主。卡点主要是处理慢,且并发,机器负载高,导致进程能分到的时间片也不多。PHP 的多进程和 协程 并不是一样的概念,一个是基于进程,另一个是基于线程的。我们知道操作系统最小的调度单位是进程,一个进程可以包含至少一个线程。进程间是相互隔离的,进程间...原创 2021-01-13 11:54:21 · 174 阅读 · 0 评论 -
如何用 wireshark 抓包
1.下载 wireshark 软件工欲善其事必先利其器,没有工具咋干活嘞,wireshark 的下载是十分简单的,这里我推荐使用腾讯软件中心的安装包,这个平台包括了大多数常用的软件,且安全无毒,企鹅爸爸还是做了一件好事的,下载wireshark这是个十分强大的工具,跟fiddler 不同的是,他几乎可以抓到所有类型的包,例如 TCP , UDP, ICMP, HTTP 等,而 fiddler 只能抓取 HTTP 的包2.wireshark 的基础面板介绍2.1 网卡接口列表我们可..转载 2021-01-13 11:52:39 · 656 阅读 · 0 评论 -
解决PHP项目显示“该网页无法正常运作”,但没有显示报错内容
在PHP8.0版本下,部署tp6项目,访问时一致报“该网页无法正常运作”创建了.env文件,debug已开启,配置也正常,TP的日志没有生成在php.ini找到以下这两个配置修改成On并重启php-fpm服务即可看到对应保存display_errors = On display_startup_errors = On重启后终于出现报错原因Deprecated: Method ReflectionParameter::getClass() is deprecated in D原创 2021-01-13 10:56:02 · 3547 阅读 · 0 评论 -
PHP使用protobuf(windows下)
1、下载所需的安装包,地址:https://github.com/protocolbuffers/protobuf/releases2、解压到D盘的protobuf文件夹下,D:\protobuf3、将D:\protobuf\bin 加入环境变量4、查看安装是否成功5、编写 protocol buffers 文件, 安装protoc解压目录的include包含一些样例,编写一个User.proto文件,文件内容如下:syntax = "proto3";packag..原创 2021-01-12 18:22:35 · 2066 阅读 · 0 评论 -
php使用protobuffer(Linux 环境下)
Protobuf 简介protobuf(Protocol buffers)是谷歌出品的跨平台、跨语言、可扩展的数据传输及存储的协议,是高效的数据压缩编码方式之一。Protocol buffers 在序列化数据方面,它是灵活的,高效的。相比于 XML 来说,Protocol buffers 更加小巧,更加快速,更加简单。一旦定义了要处理的数据的数据结构之后,就可以利用 Protocol buffers 的代码生成工具生成相关的代码。甚至可以在无需重新部署程序的情况下更新数据结构。只需使用 Prot原创 2021-01-12 17:04:04 · 740 阅读 · 0 评论 -
HomeBrew的安装和简单使用
1. 前言作为linux系统的忠实粉丝,我们都很喜欢 (Debian/Ubuntu)系列的apt包管理系统和(Redhat/Fedora)系列的yum包管理系统。 包括Windows用户都有多种方便的软件管理工具,如:360软件管理,QQ软件管理,迅雷软件管理等多种。 Mac OS X系统下面之前有老牌的Macports,Fink包管理系统,包括apple的官方Mac App Store。所以我们也向在苹果下找到一款比较新的,方便的包管理系统,没错,它就是Homebrew什么是Homebr.原创 2021-01-08 10:29:22 · 2137 阅读 · 0 评论 -
php 传值与传引用的理解(通俗易懂)
php 中遍历一个array时可以使用for或foreach,foreach的语法为:foreach ($arr as $k => $v)。遍历数组,把index赋给$k,数组的值赋给$v,那么此处的赋值是传值还是传引用呢。先看下面的例子$arr = array( array('id' => 1, 'name' => '张三'), array('id' => 2, 'name' => '李四'),);foreach ($arr as $obj) { .原创 2020-12-30 18:49:09 · 352 阅读 · 0 评论 -
php int转float并且保留小数
//如下面的例子$a = 5.00;$b = floatval($a);$c = (float)$a;var_dump($b);echo '</br>';var_dump($c);打印出来的结果是:float(5)float(5)//例子二:$a = 5;$b = floatval($a);$c = (float)$a;var_dump($b);echo '</br>';var_dump($c);打印的结果是:float(5)float(5.原创 2020-12-25 16:50:56 · 2339 阅读 · 1 评论 -
php 图片base64编码和图片base64解码
/** * 图片base64编码 * @param string $img * @param bool $imgHtmlCode * @return string */ function imgBase64Encode($img = '', $imgHtmlCode = true) { //如果是本地文件 if(strpos($img,'http') === false && !file_ex.原创 2020-12-10 09:18:41 · 366 阅读 · 0 评论 -
PHP 将内容写入文件并换行和逐行读取每一行
/** * 写入文件并换行 */ private function riteTxt(){ //文件路径 $file = storage_path('logs/data.txt'); //打开文件 $openFile = fopen($file,"w"); //测试写入并换行 for ($i = 1;$i <= 10;++$i) { fwrite($ope.原创 2020-11-27 17:02:29 · 1958 阅读 · 0 评论 -
php curl模拟post请求
说明:下面代码支持http和https,使用于各种接口请求。里面设置的参数,根据自己的需求设定。/** * curl模拟post请求 * @params string $url [请求地址] * @params string $post_data [请求数据] * @params string $timeout [超时时间] * @params string原创 2020-11-03 14:07:46 · 1128 阅读 · 0 评论 -
搞懂分布式技术1:分布式系统的一些基本概念
1、分布式小明的公司又3个系统:系统A,系统B和系统C,这三个系统所做的业务不同,被部署在3个独立的机器上运行,他们之间互相调用(当然是跨域网络的),通力合作完成公司的业务流程。将不同的业务分部在不同的地方,就构成了一个分布式的系统,现在问题来了,系统A是整个分布式系统的脸面,用户直接访问,用户访问量大的时候要么是速度巨慢,要么直接挂掉,怎么办?由于系统A只有一份,所以会引起单点失败。。。2、集群(Cluster)小明的公司不差钱,就多买几台机器吧, 小明把系统A一下子部..原创 2020-10-22 10:32:47 · 1315 阅读 · 0 评论 -
laravel Excel3.0的使用方法
1. 执行语句:composer require maatwebsite/excel 或者 composer require maatwebsite/excel ~3.12. 在config的app.php中的provides中 加上 Maatwebsite\Excel\ExcelServiceProvider::class,'providers' => [ .... Maatwebsite\Excel\ExcelServiceProvider::c...原创 2020-10-13 17:47:12 · 602 阅读 · 0 评论 -
Linux-centos7配置MySQL主从
1、首先准备两台虚拟机2、查看MySQL的版本号,这里多说几种方式。[root@localhost /]# mysql --help | grep Distribmysql Ver 14.14 Distrib 5.7.30, for Linux (x86_64) using EditLine wrapper方式二:方式三: 主库的配置 修改 my.cnf配置文件,添加如下内容#主从复制配置#设置主服务 的ID (id可以自己随便设置但是要保证和slav原创 2020-08-26 13:54:53 · 646 阅读 · 0 评论 -
centos7忘记MySQL密码
1、错误提示如下:[root@localhost ~]# mysql -u root -p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)2、查看一下mysql的进程,是否处于启动状态[root@localhost ~]# ps -ef | grep -i mysqlmysql 1983 1 0 10:24 ?原创 2020-08-26 10:50:46 · 283 阅读 · 0 评论 -
mysql分表的使用
实际业务中,我们遇到数据量大(百万级以上)的时候,表的大小太大了,影响到查询的时候,就需要做水平分表的操作了。今天就拿用户表作为例子。首先总结一下:Mysql通过Merge引擎进行分表使用场景数据表记录很大,单表记录会超过500W,比如用户表、订单表、产品表等。注意分表的id不能是自增(auto increment)的;分表必须使用MyISAM存储引擎;每个分表的表结构必须相同;MySQL必须具有存储分表数据文件和索引文件的目录的读写权限;必须启用MySQL的符号链接支持功能。原创 2020-08-25 17:35:15 · 462 阅读 · 0 评论 -
Laravel使用Repository-第一篇
1、安装执行以下命令以获取软件包的最新版本:composer require prettus/l5-repository2、> = laravel5.5 ServiceProvider将自动附加 ,否则需要手动添加如下代码:在config/app.php添加Prettus\Repository\Providers\RepositoryServiceProvider::class到providers数组的末尾:'providers' => [ 。。。 Pre原创 2020-08-24 18:07:21 · 684 阅读 · 0 评论 -
Laravel 事件(event)-第一篇
第一步、在 Providers 目录下的 EventServiceProviders.php 文件 中,手动加入红色框起来的代码。第二步、在项目的根目录执行:php artisan event:generate此时项目中,会多出两个目录 ,Events 和 Listeners 。并会自行创建两个文件 , Ceshi.php 和 CeShiListener.php 如下图所示第三步、CeShi.php 文件中的内容如图所示:第四步、CeShiListeners.php 文件.原创 2020-08-21 11:06:34 · 1159 阅读 · 0 评论 -
Linux awk详解
awk简介awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。实际上 AWK 的确拥有自己的语言: AWK 程序设计语言 , 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。awk是一种很棒的语言,它适合文本处理和报表生成,其语法较为常见,借鉴了某些语言的一些精华,如C语言等。在linux...原创 2020-08-19 16:14:24 · 318 阅读 · 0 评论 -
linux 详细grep、sed、awk
[root@VM_0_7_centos tmp]# cat 1.txt 123456[root@VM_0_7_centos tmp]# cat 2.txt 45678[root@VM_0_7_centos tmp]# grep -f 1.txt 2.txt 456[root@VM_0_7_centos tmp]# grep -f -v 1.txt 2.txt grep: -v: No such file or directory[root@VM_0_7_centos.原创 2020-08-19 15:58:38 · 236 阅读 · 0 评论 -
laravel5.5 队列的使用-二
开始使用连接/驱动根据config/queue.php文件,我们了解到驱动的配置在项目根目录.env文件内打开.env文件,可将QUEUE_DRIVER设置为QUEUE_DRIVER=redis,其下方为Redis连接基本配置# 连接地址REDIS_HOST=127.0.0.1# 连接密码REDIS_PASSWORD=# 连接端口REDIS_PORT=6379在config/database.php中最下方,我们可以看到Redis的默认配置,建...转载 2020-08-18 17:21:53 · 376 阅读 · 0 评论