php技巧

高并发php uniqid不重复唯一标识符生成方案

2021-04-19
PHP uniqid()函数可用于生成不重复的唯一标识符,该函数基于微秒级当前时间戳.在高并发或者间隔时长极短(如循环代码)的情况下,会出现大量重复数据.即使使用了第二个参数,也会重复,最好的方案是结合md5函数来生成唯一ID. 方法一 这种方法会产生大量的重复数据,运行如下PHP代码会数组索引是产生的唯一标识,对应的元素值是该唯一标识重复的次数. <?php $units = array(); for($i=0;$i<1000000;$i++){ $units[] = uniqid(); }

如何用PHP编写简单的api数据接口

2021-04-19
一.编写接口所需几样工具或软件(均是win7+64位) 1.phpStudy.SQLyog和编码工具(sublime text/webStorm/vs code均可,按自己习惯来): 2.安装好phpStudy之后,打开软件,点击启动:如果Apache和MySQL右边的显示都是绿色的,那么说明服务启动成功:另外注意一下开始的PHP服务版本,因为不同的版本对应不同node.js版本或SQLyog版本,如果开启不了,则自行百度解决,一般都是要下载对应支持的VC9(分32位和64位)或VC11(分32

详解PHP的执行原理和流程

2021-04-18
简介 先看看下面这个过程: • 我们从未手动开启过PHP的相关进程,它是随着Apache的启动而运行的: • PHP通过mod_php5.so模块和Apache相连(具体说来是SAPI,即服务器应用程序编程接口): • PHP总共有三个模块:内核.Zend引擎.以及扩展层: • PHP内核用来处理请求.文件流.错误处理等相关操作: • Zend引擎(ZE)用以将源文件转换成机器语言,然后在虚拟机上运行它: • 扩展层是一组函数.类库和流,PHP使用它们来执行一些特定的操作.比如,我们需要mysq

再谈PHP未来之路

2021-04-18
这门语言现在到底处于生命周期的哪个阶段?其定位到底是怎样的?诸如 PHP7.Swoole 的出现到底能给 PHP 带来怎样的变化? 当我们拿 PHP 和 java 进行比较的时候,我们往往就两门语言本身进行比较,如一个是弱类型一个是强类型,一个是数组打天下一个是各种数据结构,甚至连花括号是不是换行写都会被讨论一番.但它们真正的区别并非这些. 当我们谈论一门语言的时候,我们是在谈它的生态. "生态"一词在百度百科上的解释是:"生态一词,现在通常是指生物的生活状态.指生物在一定的

PHPStorm+Xdebug进行emote Debug时无法进入断点问题排查

2021-04-18
最近一直在研究Xdebug的用法,主要是因为Xdebug对PHP的开发效率提升确实很大,而却能帮我们解决很多问题.所以这里就总结下我在配置PHPStorm+Xdebug环境中遇到的坑,给遇到进不去断点的朋友一些排查的建议. 运行环境 PHP Version 7.1.22 Xdebug v2.6.0 PHP2016.2: 操作系统:MacOS 10.12.3 如果遇到无法进入断点的问题,可以按照以下的步骤进行排查 确认运行Web程序的PHP安装了Xdebug扩展 PHP永久了,难免会在电脑上多装几

PHP json_encode中文乱码解决方法

2021-04-18
相信很多人在使用Ajax与后台php页面进行交互的时候都碰到过中文乱码的问题.JSON作为一种轻量级的数据交换格式,备受亲睐,但是用PHP作为后台交互,容易出现中文乱码的问题.JSON和js一样,对于客户端的字符都是以UTF8的形式进行处理的,也就是说,使用JSON作为提交和接收的数据格式时字符都采用UTF8编码处理,当我们的页面编码和数据库编码不是采用UTF8的时候,就极容易出现中文乱码的问题.解决办法自然是在用js或者PHP处理JSON数据的时候都采用UTF8的形式. PHP5.2或以上的版

PHP实现创建以太坊钱包转账等功能

2021-04-18
1.Geth下载 (对以太坊了解不深的可以后面自己查找有关geth的资料,与此类似的客户端还有Ethereum.Parity .Mist),本文采用windows版(Windows系统:geth-windows-amd64-1.8.3) https://ethfans.org/wikis/Ethereum-Geth-Mirror 安装: windows版的直接傻瓜式安装到放软件的地方,然后打开安装根目录,这时可以看到有个geth.exe的可执行文件,先别急执行:先在该目录下创建一个piccgen

详解各种PHP函数漏洞

2021-04-18
1.MD5 compare漏洞 PHP在处理哈希字符串时,会利用"!="或"=="来对哈希值进行比较,它把每一个以"0E"开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以"0E"开头的,那么PHP将会认为他们相同,都是0. 常见的payload有 0x01 md5(str) QNKCDZO 240610708 s878926199a s155964671a s214587387a s214587387

php7和php5的详细对比

2021-04-18
PHP7 PHP7正式发布到现在已经一年半了,刚出道就号称比旧版本快了几倍,各种开源框架或系统运行在PHP7上速度效率提高了几倍,反正不管是媒体还是开发者都在煽风点火,不,应该是赞不绝口. 一般手机系统升级我是跑最后的,因为不愿意踩坑,毕竟iOS和Android这种系统都会出现bug,何况世界上被人黑的最多的语言. 今日时机已到,看看PHP7有没有传说的那么王炸. 安装两个PHP版本 http://php.net/ 已经有最新PHP7的最新版本,大家可自行下载. 为了测试PHP5和PHP7(PH

PHP7下安装并使用xhprof性能分析工具

2021-04-18
该 xhprof 版本是从 https://github.com/longxinH/xhprof 获取 安装 xhprof cd xhprof/extension/ phpize ./configure  make 然后在/etc/php.ini中根据情况加入 extension=xhprof.so 执行 php -m | grep xhprof 可以看见输出,说明php扩展安装成功,然后重启Apache或者php-fpm 运行 可以直接运行从github上clone下来的文件里面example

Mac M1安装mnmp(Mac+Nginx+MySQL+PHP)开发环境

2021-03-24
之前刚装好了 HomeBrew,接下来就要安装 环境了. 注意:如果 brew install 出以下错误, 则安装时使用 arch -arm64 brew install 软件包名 进行安装 安装 Nginx brew install nginx 安装成功后,通过 brew info nginx ,查看 nginx 信息,最主要是看 网站根目录与配置文件目录.(默认为 8080 端口) php-fpm 解析 php # 终端 vim /opt/homebrew/etc/nginx/nginx.

PHP引擎php.ini参数优化深入讲解

2021-03-20
PHP引擎php.ini参数优化 无论是apache还是nginx,php.ini都是适合的.而php-fpm.conf适合nginx+fcgi的配置 首先选择产品环境的php.ini(php.ini-production) /home/oldboy/tools/php-5.3.27/php.ini-development /home/oldboy/tools/php-5.3.27/php.ini-production 1.打开php的安全模式 php的安全模式是个非常重要的php内嵌的安全机制

PHP如何限制定时任务的进程数量

2021-03-18
前言 现在的工作中,经常要写一些脚本做一些异步的操作. 一般是大量的数据修改,或者解决部分并发问题. 为了能够稳定的做好数据处理,一般情况下会用定时脚本的方式. 那么问题来了. 可能存在的问题 当我们处理大量数据的时候,脚本的执行时间可能很长,或者重复处理某条数据(写错的情况下). 为了避免数据的重复处理.运行脚本过多导致服务器压力过大等问题,我们需要限制脚本的运行数量. 如何做 思路一 查询某种标识的进程数量,如果超过一定数量,则直接退出,不处理. 思路二 记录每次的PID,可以使用 文件.r

PHP好看的版权信息注释图型实例详解

2021-03-04
1.神兽 <?php /** * ┏┻━━━━━┻┓ * ┃ ┃ * ┃ ┳┛ ┗┳ ┃ * ┃ ┻ ┃ * ┗━┓ ┏━━━┛ * ┃ ┃神兽 保佑 * ┃ ┃代码无BUG * ┃ ┗━━━━━━━━━┓ * ┃ 我们 jb51.net ┣┓ * ┃ ┏┛ * ┗━┓ ┏━━━┓ ┏┛ * ┗━┛ ┗━┛ */ ?> 2.佛祖 /// // _ooOoo_ // // o8888888o // // 88" . "88 // // (| ^_^ |) // // O\ =

PHP危险函数禁用深入详解

2021-03-03
error_log() 功能描述:将错误信息发送到指定位置(文件).  安全备注:在某些版本的 PHP 中,可使用 error_log() 绕过 PHP safe mode, 执行任意命令.  危险等级:低 phpinfo() 功能描述:输出 PHP 环境信息以及相关的模块.WEB 环境等信息.  危险等级:中 scandir()  功能描述:列出指定路径中的文件和目录.  禁用建议:不建议禁用,因为thinkphp框架需要调用. 危险等级:中 syslog()  功能描述:可调用 UNIX 系

php中使用array_filter()函数过滤数组实例讲解

2021-03-02
在数组中元素的过滤上,有一种方法比较特殊,结合了回调函数的使用,通过键值来与函数进行对应.相信说到这里很多人对于这种函数方法已经很好奇了,它就是array_filter() 函数的使用.接下来我们对该函数的定义.语法.参数.返回值.实例进行全面的介绍,具体过滤方法展现如下. 1.定义 array_filter用回调函数处理数组中的各个元素. 重点在于过滤(而不是新增)某个元素,当你处理到一个元素时,如果返回了false,那么这个元素将会被过滤掉.PS:保持了原来的索引. 2.语法 array a

PHP安全配置优化详解

2021-03-02
由于脚本语言和早期版本设计的诸多原因,php项目存在不少安全隐患.从配置选项来看,可以做如下的优化. 1.屏蔽PHP错误输出. 在/etc/php.ini(默认配置文件位置),将如下配置值改为Off display_errors=Off 不要将错误堆栈信息直接输出到网页上,防止黑客加以利用相关信息. 正确的做法是: 把错误日志写到日志文件中,方便排查问题. 2.屏蔽PHP版本. 默认情况下PHP版本会被显示在返回头里,如: Response Headers X-powered-by: PHP/7

php array_map()函数实例用法

2021-03-01
有时候我们想要对数组里的元素进行改变,不过在函数的选择上犯了难题.本篇带来的是array_map函数,对于数组中元素的值进行调整,然后再返回新的数组,处理数组的数量上也不止一个.下面我们就array_map()函数的说明.语法.参数.返回值.实例带来详解. 1.说明 array_map用回调函数处理数组中的各个元素. 在函数中你可以改变各个元素的值,重点在你需要什么样的值就返回什么样的值,保持索引. 可以一次性处理多个数组.但是数组的数量应该与回调函数的参数保持一致 2.语法 array_map

php中array_fill函数的实例用法

2021-03-01
在数组的填充方面,我们如果在实现前,就有指定的值去添加,可以使用array_fill函数来解决.需要注意的是,针对不同的php版本,参数number的返回结果是有所不同的,大家可以在了解了自己对应php版本后,对array_fill的说明.语法.参数.返回值和实例进行全面的学习. 1.说明 array_fill()函数用于使用给定索引,从给定索引中填充数组中的n个元素. 2.语法 array_fill(index,number,value); 3.参数 index 必需.规定返回数组的起始索引.

laravel与thinkphp之间的区别与优缺点

2021-02-28
Laravel框架: Laravel是当今最熟练,流行和广泛使用的开源框架之一,一直秉承着优雅的原则,完美支持**composer**,实现了更丰富的扩展,社区文档活跃,相较于TP,Lavavel更庞大,安全性也更高,更适合开发大中型项目,被称为"巨匠型开发框架". 问题描述: 1.渲染模版方式的不同 在Laravel框架里,使用return view()来渲染模版:而ThinkPHP里则使用了$this->display()的方式渲染模版. 2.在实际开发中我们常常遇到这样的问