
php
文章平均质量分 61
深夜程序猿
everything in front of you is the best arrangement
展开
-
数组函数大全
使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)保留键名的数组排序。使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)忽略键名的数组排序。使用回调函数过滤数组中的每个元素,如果回调函数为TRUE,数组的当前元素会被包含在返回的结果数组中,数组的键名保留不变。array_reduce($arr,"function","*");..转载 2022-07-28 18:11:42 · 5635 阅读 · 0 评论 -
PHP $_SERVER
_SERVER['HTTP_ACCEPT_LANGUAGE']//浏览器语言$_SERVER['REMOTE_ADDR']//当前用户IP。$_SERVER['REMOTE_HOST']//当前用户主机名$_SERVER['REMOTE_PORT']//端口。$_SERVER['SERVER_NAME']//服务器主机的名称。$_SERVER['PHP_SELF']//正在执行脚本的文件名$_SERVER['argv']//传递给该脚本的参数。...原创 2022-07-28 18:19:25 · 623 阅读 · 0 评论 -
PHP获取随机数和取整
1.rand()函数://无参数:rand()函数用户获取随机数//带参数:rand($min,$max),$min表示从XX开始取值,$max表示最大只能为XXecho rand() . "\n";//得到一个不定位数的随机数echo rand(5, 15);//在5~15之间取一个数注意:mt_rand() 用法跟rand()类似,但是mt_rand()的执行效率更高,平常使用也推荐用mt_rand().2.array_slice函数://生成一个数组$numbers = r原创 2021-08-03 10:41:59 · 950 阅读 · 0 评论 -
PHP函数include include_once require和require_once的区别
了解下include、include_once、require和require_once这4个函数:include函数:会将指定的文件读入并且执行里面的程序; require函数:会将目标文件的内容读入,并且把自己本身代换成这些读入的内容; include_once 函数:在脚本执行期间包含并运行指定文件。此行为和 include 语句类似,唯一区别是如果该文件中已经被包含过,则不会再次包...原创 2021-08-03 10:25:22 · 236 阅读 · 0 评论 -
echo和print和print_r和v_dump
1.echo 和 print 的区别共同点:首先echo 和 print 都不是严格意义上的函数,他们都是 语言结构;他们都只能输出 字符串,整型跟int型浮点型数据。不能打印复合型和资源型数据;而区别是:echo 可以连续输出多个变量,而print只能一次输出一个变量。print打印的值能直接复制给一个变量,如 $a = print “123”;而echo 不可以,它没有像函数的行为...原创 2021-08-03 10:22:42 · 164 阅读 · 0 评论 -
PHP 生命周期
PHP 运行模式大多分为两种 Web 模式、Cli 模式。无论哪种模式,PHP 生命周期都是一样的,作为一种 SAPI 运行。SAPI(Server Application Programming Interfac) 服务端应用编程接口,SAPI 通过一系列钩子函数,使 PHP 和其他应用解耦分离,交换处理数据,这是 PHP 非常优雅的设计,这个设计的优点是不用考虑 PHP,和其他应用之间的...转载 2019-11-21 23:21:41 · 188 阅读 · 0 评论 -
PHP 错误与异常处理
异常与错误PHP中的错误: php中大部分情况是由错误的语法,服务器环境导致,使得编译器无法通过检查,甚至无法运行的情况。warning、notice都是错误,只是他们的级别不同而已,并且错误是不能被try-catch捕获的。 PHP中的异常: 程序在运行中出现不符合预期的情况,允许发生(你也不想让他出现不正常的情况)但他是一种不正常的情况,按照我们的正常逻辑本不该出的错误,但仍然会出...转载 2019-05-13 09:36:30 · 221 阅读 · 0 评论 -
php处理抢购类功能的高并发请求
本文以抢购、秒杀为例。介绍如何在高并发状况下确保数据正确。在高并发请求下容易参数两个问题1.数据出错,导致产品超卖。2.频繁操作数据库,导致性能下降。测试环境Windows7apache2.4.9php5.5.12php框架 yii2.0工具 apache bench (apache自带高并发请求工具)。通常处理方法从控制器可以看出代码思路。先查询商品库存。...转载 2019-05-16 10:21:10 · 1132 阅读 · 0 评论 -
PHP实现redis限制单ip、单用户的访问次数功能
Method 1通过key记录IP:rate.limiting:$IP,同时初始时设置期限为60秒,如果超时则重新设置,否则进行判断,当一分钟内访问超过100次,则禁止访问。$isKeyExists = rate.limiting:$IPif ($isKeyExists == 1) { $times = INCR rate.limiting:$IP if ($times &...转载 2019-05-15 14:39:59 · 1258 阅读 · 0 评论 -
redis解决高并发问题,如商品秒杀
redis真的是一个很好的技术,它可以很好的在一定程度上解决网站一瞬间的并发量,例如商品抢购秒杀等活动。。。redis之所以能解决高并发的原因是它可以直接访问内存,而以往我们用的是数据库(硬盘),提高了访问效率,解决了数据库服务器压力。为什么redis的地位越来越高,我们为何不选择memcache,这是因为memcache只能存储字符串,而redis存储类型很丰富(例如有字符串、LIST、...转载 2019-05-16 10:01:50 · 6120 阅读 · 0 评论 -
redis实现高并发下的抢购/秒杀功能
抢购/秒杀是如今很常见的一个应用场景,那么高并发竞争下如何解决超抢(或超卖库存不足为负数的问题)呢?常规写法:查询出对应商品的库存,看是否大于0,然后执行生成订单等操作,但是在判断库存是否大于0处,如果在高并发下就会有问题,导致库存量出现负数这里我就只谈redis的解决方案吧...我们先来看以下代码(这里我以laravel为例吧)是否能正确解决超抢/卖的问题:<?php...转载 2019-05-16 10:05:19 · 592 阅读 · 0 评论 -
php结合redis实现高并发下的抢购、秒杀功能的实例
抢购、秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个:1 高并发对数据库产生的压力2 竞争状态下如何解决库存的正确减少("超卖"问题)对于第一个问题,已经很容易想到用缓存来处理抢购,避免直接操作数据库,例如使用Redis。重点在于第二个问题常规写法:查询出对应商品的库存,看是否大于0,然后执行生成订单等操作,但是在判断库存是否大于0处,如果在高并发下就会有问题,导...转载 2019-05-16 10:14:19 · 413 阅读 · 0 评论 -
redis+PHP实现高并发下秒杀数据入库的问题
在高并发下实现抢购秒杀功能中,我有一个疑问,就是数据入库的问题,什么时候入库。设想思路:1.判断他抢购成功了,立马把生成的订单数据写入mysql订单表,同时库存表字段减少1;2.判断抢购成功后,把用户的user_id存入到redis的list列表里(比如:order,以user_id为值的列表)。然后再用crontab定时去一个一个插入到mysql订单表里,同时库存表字段减少1。设想结果...转载 2019-05-16 10:25:15 · 1293 阅读 · 0 评论 -
关于php 高并发解决的一点思路
涉及抢购、秒杀、抽奖、抢票等活动时,为了避免超卖,那么库存数量是有限的,但是如果同时下单人数超过了库存数量,就会导致商品超卖问题。那么我们怎么来解决这个问题呢,我的思路如下(伪代码):sql1:查询商品库存if(库存数量 > 0){ //生成订单... sql2:同时库存-1}当没有并发时,上面的流程看起来是再正常不过了,假设同时两个人下单,而库存只有1个了,在sq...转载 2019-05-17 10:08:17 · 206 阅读 · 0 评论 -
PHP之异步处理
PHP之 异步处理个人理解在项目中使用消息队列一般是有如下几个原因:1.把瞬间服务器的请求处理换成异步处理,缓解服务器的压力2.实现数据顺序排列获取redis 队列 实现 异步处理的效果<?php/** * 请求过来以后,如果数据过大,导致响应速度过慢,则可以先把要处理的数据保存到redis中, 然后直接去响应 *///redis数据入队操作 $redis ...转载 2019-05-13 09:34:50 · 4729 阅读 · 0 评论 -
【高并发简单解决方案】redis队列缓存 + mysql 批量入库 + php离线整合
需求背景:有个调用统计日志存储和统计需求,要求存储到mysql中;存储数据高峰能达到日均千万,瓶颈在于直接入库并发太高,可能会把mysql干垮。问题分析思考:应用网站架构的衍化过程中,应用最新的框架和工具技术固然是最优选择;但是,如果能在现有的框架的基础上提出简单可依赖的解决方案,未尝不是一种提升自我的尝试。解决: 问题一:要求日志最好入库;但是,直接入库mysql确实扛不住...转载 2019-05-13 09:40:27 · 473 阅读 · 0 评论 -
const常量与define宏定义的区别
#define RADIUS 100;constfloatRADIUS = 100;(1) 编译器处理方式不同 define宏是在预处理阶段展开。 const常量是编译运行阶段使用。(2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开。 const常量有具体的类型,在编译阶段会执行类型检查。(3) 存储方式不同 d...转载 2019-05-13 09:41:16 · 850 阅读 · 0 评论 -
PHP四大加速缓存器opcache,apc,xcache,eAccelerator与php解析的初步理解
前言:这阵在重新整理下知识点,由缓存技术考虑到的php缓存器,下面知道的大概有这个几种:opcache、APC、xcache、eAccelerator,下面是我个人的理解,这几种加速器的原理是将编译后的源码起来,当下次执行相同代码时,可以省去词法语法分析等步骤,提高php的执行效率下面是这些加速的配置方式,后续我将继续更新此文章,包含使用这些加速器的不同效果一、opcache(官方推出...转载 2019-05-13 09:57:04 · 4048 阅读 · 0 评论 -
php获取网页中图片、DIV内容的简单方法
1、获取网页中所有的图片: <?php //取得指定位址的內容,并储存至 $text $text=file_get_contents('http://www.jb51.net/'); //取得所有img标签,并储存至二维数组 $match 中 preg_match_all('/]*>/i', $text, $match);...转载 2019-05-17 10:13:53 · 1397 阅读 · 0 评论 -
PHP中引入文件的四种方式及区别
综述和基本语法 有4个文件加载语句:include,require,include_once,require_once。require函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。include函数一般放在流程控制的处理部分中。PHP程序网页在读到 include的文件时,才将它读进来。这种...转载 2019-05-09 17:13:32 · 1877 阅读 · 0 评论 -
PHP进程线程解析
PHP进程线程解析php开发需要了解进程和线程,因为也会遇到多线程的开发。那什么是进程和线程呢?###进程进程是程序执行是的一个实例,进程能够分配给cpu和内存等资源。进程一般包括指令集和系统资源,其中指令集就是你的代码,系统资源就是指cpu、内存以及I/O等。线程线程是进程的一个执行流,线程不能分配系统资源,它是进程的一部分,比进程更小的独立运行的单位。进程和线程的关系...转载 2019-05-13 09:32:41 · 615 阅读 · 0 评论 -
php中浮点数计算问题整理
本文讲的是php中浮点数计算问题整理, 如果用php的+-/计算浮点数的时候,可能会遇到一些计算结果错误的问题,比如echo intval( 0.58100 );会打印57,而不是58,这个其实是计算机底层二进制无法精确表示浮点数的一个bug,是跨语言的。如果用php的+-/计算浮点数的时候,可能会遇到一些计算结果错误的问题,比如echo intval( 0.58100 );会打印57,而...转载 2019-05-10 10:57:24 · 1425 阅读 · 0 评论 -
PHP中的符号 ->、=> 和 :: 详解
‘- >’符号是“插入式解引用操作符”(infix dereference operator)。换句话说,它是调用由引用传递参数的子程序的方法(当然,还有其它的作用)。正如我们上面所提到的,在调用PHP的函数的时候,大部分参数都是通过引用传递的。PHP中的‘->’功能就和它们在Perl或C++中一样。下面是一个简单的解引用的例子: echo $x->def(); # 输出...转载 2019-05-09 18:05:17 · 17774 阅读 · 0 评论 -
php class中self,parent,this的区别,以及实例
我容易混淆public,private,protected,还容易混淆this,self这些东西。前面已经写了一篇关于public,private,protected博文了,下面来说一下this,self,parent的用法一,this1,要用this,你必有是一个对像的形势,不然它会报错的,Fatal error: Using $this when not in object conte...转载 2019-05-09 18:01:40 · 574 阅读 · 0 评论 -
Laravel的50个技巧
Eloquent1.自动模型验证<?phpclass Post extends Eloquent{ public static $autoValidate = true; protected static $rules = array(); protected static function boot() { parent::b...转载 2019-05-09 17:28:52 · 653 阅读 · 0 评论 -
PHP date() 和 strtotime() 使用详解
1.php中时间转换函数echo strtotime(date('Ymd')); //1560096000echo date("Y-m-d H:i:s",'1560096000'); //2019-06-10 00:00:002.php中获得今天零点的时间戳//要获得零点的unix时间戳,可以使用$todaytime=strtotime('today')...原创 2019-05-10 18:14:47 · 26608 阅读 · 2 评论 -
总结PHP 7新增加的特性
?? 运算符(NULL 合并运算符) 把这个放在第一个说是因为我觉得它很有用。用法: $a = $_GET['a'] ?? 1;它相当于: <?PHP $a = isset($_GET['a']) ? $_GET['a'] : 1; 我们知道三元运算符是可以这样用的: $a ?: 1但是这是建立在 $a 已经定义了的前提上。?? 运算符(NULL 合并运算符)把这个放在第一个说是因为我...转载 2019-05-09 17:06:15 · 481 阅读 · 0 评论 -
PHP 7 升级与特性总结
前言话说当年追时髦,php7一出就给电脑立马装上了,php5和php7共存,也是立马写了个超级耗时间的循环脚本测了一番,确实php7给力很多,然后也是注意了一些新增的特性与一些丢弃掉的用法。由于php升级乃头等大事,公司近期才打算升级,所以之前一直只能私下欣赏php7带来的快感,负责升级的小伙伴搞了个分享,还挺全的,此处mark一下,当作笔记。主要研究问题:1.PHP7带来的好处...转载 2019-05-09 17:05:29 · 287 阅读 · 0 评论 -
PHP字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、切割成数组等)
一、字符串替换str_replace("iwind", "kiki", "i love iwind, iwind said");将输出 "i love kiki, kiki said"str_replace(find,replace,string,count)参数 描述find 必需。规定要查找的值。replace 必需。规定替换 find 中的值的值。string 必需...转载 2019-05-09 16:51:43 · 4424 阅读 · 0 评论 -
PHP 字符串操作整理
字符串的概念:一个字符串string就是由一系列的字符组成,其中每个字符等同于一个字节。这意味着 PHP 只能支持 256 的字符集,因此不支持 Unicode 。String最大可以达到2G;语法:单引号/双引号/heredoc/newdoc 抛开效率问题这些都一样(一)字符串输出:echo():输出一个或多个字符串print():输出一个字符串printf(...原创 2019-10-28 16:05:13 · 292 阅读 · 0 评论 -
HTTP 方法:GET 对比 POST
两种最常用的 HTTP 方法是:GET 和 POST。什么是 HTTP?超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信。HTTP 的工作方式是客户机与服务器之间的请求-应答协议。web 浏览器可能是客户端,而计算机上的网络应用程序也可能作为服务器端。举例:客户端(浏览器)向服务器提交 HTTP 请求;服务器向客户端返回响应。响应包含关于请求的状态信息以及可能...转载 2019-05-09 18:08:53 · 267 阅读 · 0 评论 -
php中防止SQL注入的方法
什么是SQL注入?SQL注入大部分情况下都是由于并没有对用户提交的数据、URL参数等进行过滤,而恰恰在这些未被过滤的参数或数据中存在了sql执行语句,最终导致数据库的数据被篡改、被导出等风险。怎样防止?【一、在服务器端配置】安全,PHP代码编写是一方面,PHP的配置更是非常关键。修改配置文件php.ini(1) 打开php的安全模式php的安全模式是个非常重要的内嵌的安全机...转载 2019-05-09 18:10:32 · 2310 阅读 · 0 评论 -
PHP内存管理 垃圾回收
概述1) 操作系统直接管理着内存,所以操作系统也需要进行内存管理,计算机中通常都有内存管理单元(MMU) 用于处理CPU对内存的访问。2) 应用程序无法直接调用物理内存, 只能向系统申请内存。向操作系统申请内存空间会引发系统调用。系统调用会将CPU从用户态切换到内核。为了减少系统调用开销。通常在用户态进行内存管理。 申请大块内存备用。使用完的内存不马上释放,将内存复用,避免多次内存申请和...转载 2019-05-10 10:53:34 · 290 阅读 · 0 评论 -
php 弱类型总结
0x01 前言最近CTF比赛,不止一次的出了php弱类型的题目,借此想总结一下关于php弱类型以及绕过方式0x02 知识介绍php中有两种比较的符号 == 与 ===1 <?php2 $a = $b ;3 $a===$b ;4 ?>=== 在进行比较的时候,会先判断两种字符串的类型是否相等,再比较== 在进行比较的时候,会先将字符串类型转化成相同,再比较...转载 2019-05-10 10:52:28 · 194 阅读 · 0 评论 -
详谈PHP垃圾回收机制
引用计数基本知识每个php变量存在一个叫"zval"的变量容器中。一个zval变量容器,除了包含变量的类型和值,还包括两个字节的额外信息。第一个是"is_ref",是个bool值,用来标识这个变量是否是属于引用集合(reference set)。通过这个字节,php引擎才能把普通变量和引用变量区分开来,由于php允许用户通过使用&来使用自定义引用,zval变量容器中还有一个内部引用计数...转载 2019-05-10 10:43:17 · 205 阅读 · 0 评论 -
PHP新的垃圾回收机制:Zend GC详解
概述在5.2及更早版本的PHP中,没有专门的垃圾回收器GC(Garbage Collection),引擎在判断一个变量空间是否能够被释放的时候是依据这个变量的zval的refcount的值,如果refcount为0,那么变量的空间可以被释放,否则就不释放,这是一种非常简单的GC实现。然而在这种简单的GC实现方案中,出现了意想不到的变量内存泄漏情况(Bug:http://bugs.php...转载 2019-05-10 10:41:14 · 298 阅读 · 0 评论 -
PHP获取域名及域名IP的方法
最近在做的一个项目用到获取域名和IP的功能,大致有以下几种方法。获取域名IP的方法可以使用内置的函数gethostbyname获取,例如:echogethostbyname("www.jbxue.com");以上则会直接输出域名所对应的的IP,当然各个地方测试的结果是不一样的,因为百度的服务器也不只有一台,我这边的ip是115.239.210.27;下面是获取域名的方法,...转载 2019-05-10 10:38:29 · 7235 阅读 · 0 评论 -
PHP 类型比较表
以下的表格显示了 PHP类型和比较运算符在松散和严格比较时的作用。该补充材料还和类型戏法的相关章节内容有关。同时,大量的用户注释和»BlueShoes的工作也给该材料提供了帮助。在使用这些表格之前,需要明白变量类型及它们的意义。例如,"42"是一个字符串而42是一个整数。FALSE是一个布尔值而"false"是一个字符串。Note:HTML 表单并不传递整数、浮点数...转载 2019-05-10 10:34:06 · 145 阅读 · 0 评论 -
PHP 单引号与双引号的区别(总结)
看好多代码有时候用单引号或双引号实现包含字符串的内容,其实简单个概括下双引号中的变量可以解析,单引号就是绝对的字符串。1、定义字符串 在PHP中,字符串的定义可以使用单引号,也可以使用双引号。但是必须使用同一种单或双引号来定义字符串,如:‘Hello"和“Hello'为非法的字符串定义。 定义字符串时,只有一种引号被视为定义符,即单引号或双引号。于是,如果一个字符串由双引号开始,...转载 2019-05-10 10:31:58 · 22392 阅读 · 2 评论 -
php中extends与implements
PHP 类是单继承,也就是不支持多继承,当一个类需要多个类的功能时,继承就无能为力了,为此 PHP 引入了类的接口技术。接口的使用使用implements关键字,而对抽象类使用的是extends继承关键字。在接口中只能定义常量和方法,不能实现方法,const定义常量,functionUser();不能使用pubilc$a ="a"与 pubilc static$a="a";//...转载 2019-05-09 18:15:23 · 822 阅读 · 0 评论