php
文章平均质量分 75
zndy10
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
php计算问题
要搞明白这个原因, 首先我们要知道浮点数的表示(IEEE 754): 浮点数, 以64位的长度(双精度)为例, 会采用1位符号位(E), 11指数位(Q), 52位尾数(M)表示(一共64位). 符号位:最高位表示数据的正负,0表示正数,1表示负数。 指数位:表示数据以2为底的幂,指数采用偏移码表示 尾数:表示数据小数点后的有效数字. 这里的关键点就在于, 小数在二进转载 2017-06-28 16:29:09 · 450 阅读 · 0 评论 -
PHP内核探索:解释器的执行过程
这里将介绍引擎内部执行一个PHP脚本的流程,以CLI SAPI为例子来对流程中核心的部分做简单介绍,省去一些初始化及清理操作。 CLI(Command Line Interface)即PHP的命令行模式,现在此SAPI是默认安装的,我们在服务器上安装完PHP之后,一般会生成一个可执行文件,假设此文件为/usr/local/bin/php ,那么我们在SHELL下可以用以下命令来执行一个PHP脚本转载 2017-07-13 09:35:22 · 412 阅读 · 0 评论 -
PHP内核探索:变量存储与类型
先回答前面一节的那个问题吧。 01 02 $foo = 10; 03 $bar = 20; 04 05 function change() { 06 global $foo;转载 2017-07-13 09:38:42 · 385 阅读 · 0 评论 -
PHP内核探索:PHP中的哈希表
PHP中使用最为频繁的数据类型非字符串和数组莫属,PHP比较容易上手也得益于非常灵活的数组类型。 在开始详细介绍这些数据类型之前有必要介绍一下哈希表(HashTable)。 哈希表是PHP实现中尤为关键的数据结构。 哈希表在实践中使用的非常广泛,例如编译器通常会维护的一个符号表来保存标记,很多高级语言中也显式的支持哈希表。 哈希表通常提供查找(Search),插入(Insert),删除(Dele转载 2017-07-13 09:40:07 · 489 阅读 · 0 评论 -
网站中返回上级的处理
我们开发网站是总会遇到页面的跳转问题,今天这个就是我工作终于到的。---返回到上级页面的实现思路。 1.我们首先就要获取到返回的链接 我们可以自定义一个方法: /** * 获取返回列表的链接 * @param $refer */ protected function _backToListUrl($refer) { if ( !empty($refer) && 0 ===原创 2017-06-26 14:19:27 · 930 阅读 · 0 评论 -
php中的密码加密问题
我们熟知的加密方式有很多,比如MD5,sha。下面是我工作中用到的密码加密的方式: 我们利用php自带的函数,password_hash()。 $password = 'password123456';//原始密码 $hash_password = password_hash($password, PASSWORD_BCRYPT);//使用BCRYPT算法加密密码 if (password原创 2017-06-26 14:29:26 · 329 阅读 · 0 评论 -
ajax异步请求查询操作
大概的思路是这样的,这也是我项目中的经历: 1.前端首先获取到输入的input框的值 2.ajax异步发送请求去后端接口 3.相应的接口处理逻辑,返回json 4.前端判断相应值并且渲染页面 HTML代码 来电电话 * js代码 $('#phone').blur(function(){ var phone原创 2017-08-01 14:36:42 · 691 阅读 · 0 评论 -
不再以讹传讹,GET和POST的真正区别
如果有人问你,GET和POST,有什么区别?你会如何回答? 我的经历 前几天有人问我这个问题。我说GET是用于获取数据的,POST,一般用于将数据发给服务器之用。 这个答案好像并不是他想要的。于是他继续追问有没有别的区别?我说这就是个名字而已,如果服务器支持,他完全可以把GET改个名字叫GET2。他反问道,那就是单纯的名字上的区别喽?我想了想,我觉得如果说再具体的区别,只能去看RFC文档了,转载 2017-08-02 15:51:13 · 310 阅读 · 0 评论 -
php实现加密
由于项目的需要,要写一个能生成“授权码”的类(授权码主要包含项目使用的到期时间),生成的授权码将会写入到一个文件当中,每当项目运行的时候,会自动读取出文件中的密文,然后使用唯一的“密钥”来调用某个函数,对密文进行解密,从中解读出项目的使用到期时间。 之前,自己有先试着写了下,主要是base64+md5+反转字符串。算法太过简单,很容易被破解,而且也没有能过做到“密钥”在加解密中的重要性,故而舍之原创 2017-08-17 14:40:08 · 487 阅读 · 0 评论 -
PHP错误机制
在实际开发中,错误及异常捕捉仅仅靠try{}catch()是远远不够的。 所以引用以下几中函数。 我们先来说异常: 首先要明白异常跟错误是不一样的,异常是出现正常逻辑之外的情况,而错误是指运行时出错了,比如,使用了一个未定义的变量等,异常需要抛出(throw)才能被捕捉到,而错误会导致程序执行终止 1、通常处理异常的方式是使用try{}catch{}去捕捉有throw抛出的异常原创 2017-08-30 10:08:47 · 356 阅读 · 0 评论 -
PHP内核探索:PHP里的opcode
opcode是计算机指令中的一部分,用于指定要执行的操作, 指令的格式和规范由处理器的指令规范指定。 除了指令本身以外通常还有指令所需要的操作数,可能有的指令不需要显式的操作数。 这些操作数可能是寄存器中的值,堆栈中的值,某块内存的值或者IO端口中的值等等。 通常opcode还有另一种称谓:字节码(byte codes)。 例如Java虚拟机(JVM),.NET的通用中间语言(CIL: Comm转载 2017-07-12 09:12:16 · 347 阅读 · 0 评论 -
PHP内核探索:操作码OpCode
运行一段PHP代码主要有两个阶段:编译和执行。 当然编译过程中还包括词法分析语法分析不同阶段和细节,这里我们将其作为一个整体。在这两个阶段之间,PHP代码会被编译成op code,可以将其认为是引擎的一个中间语言,编辑阶段把PHP源码生成op code,然后在执行阶段执行这些op code。这篇文章将简单的介绍op code。 PHP代码编译之后会生成许多的op,每一个op都是一个zend_op转载 2017-07-12 09:10:53 · 440 阅读 · 0 评论 -
PHP内核探索:PHP脚本的执行细节
众所周知,计算机的CPU只能执行二进制的机器码,每种CPU都有对应的汇编语言,汇编语言编译器将汇编语言翻译成二进制的机器语言,然后CPU开始执行这些机器码。汇编语言作为机器语言与程序设计者之间的一个层,给我们带来了很多方便,程序员不需要用晦涩的01数字来书写程序,当然人们并不满足这样的一个进步,于是在汇编语言之上又多了一个层——C语言,C语言更贴近人类熟悉的“自然语言”,程序设计者可以通过C语言编转载 2017-07-12 09:09:39 · 268 阅读 · 0 评论 -
php垃圾回收机制
在5.2及更早版本的PHP中,没有专门的垃圾回收器GC(Garbage Collection),引擎在判断一个变量空间是否能够被释放的时候是依据这个变量的zval的refcount的值,如果refcount为0,那么变量的空间可以被释放,否则就不释放,这是一种非常简单的GC实现。然而在这种简单的GC实现方案中,出现了意想不到的变量内存泄漏情况(Bug:http://bugs.php.net/bug转载 2017-07-10 18:05:09 · 305 阅读 · 0 评论 -
PHP内核探索:Apache模块介绍
Apache概述 Apache是目前世界上使用最为广泛的一种Web Server,它以跨平台、高效和稳定而闻名。按照去年官方统计的数据,Apache服务器的装机量占该市场60%以上的份额。尤其是在X(Unix/Linux)平台上,Apache是最常见的选择。其它的Web Server产品,比如IIS,只能运行在Windows平台上,是基于微软.Net架构技术的不二选择。 Apache支持许多特转载 2017-07-11 09:45:26 · 328 阅读 · 0 评论 -
PHP内核探索:从SAPI接口开始
SAPI:Server Application Programming Interface 服务器端应用编程端口。研究过PHP架构的同学应该知道这个东东的重要性,它提供了一个接口,使得PHP可以和其他应用进行交互数据。 本文不会详细介绍每个PHP的SAPI,只是针对最简单的CGI SAPI,来说明SAPI的机制。 我们先来看看PHP的架构图: SAPI指的是PHP具体应用的编程接口, 就像翻译 2017-07-11 09:56:07 · 434 阅读 · 0 评论 -
PHP内核探索:一次请求的开始与结束
PHP开始执行以后会经过两个主要的阶段: 处理请求之前的开始阶段请求之后的结束阶段 开始阶段有两个过程: 第一个过程是模块初始化阶段(MINIT), 在整个SAPI生命周期内(例如Apache启动以后的整个生命周期内或者命令行程序整个执行过程中), 该过程只进行一次。 第二个过程是模块激活阶段(RINIT),该过程发生在请求阶段, 例如通过url请求某个页面,则在每次请求之前都会进行模转载 2017-07-11 09:57:31 · 259 阅读 · 0 评论 -
PHP内核探索:Apache运行与钩子函数
Apache是目前世界上使用最为广泛的一种Web Server,它以跨平台、高效和稳定而闻名。按照去年官方统计的数据,Apache服务器的装机量占该市场60%以上的份额。尤其是在X(Unix/Linux)平台上,Apache是最常见的选择。其它的Web Server产品,比如IIS,只能运行在Windows平台上,是基于微软.Net架构技术的不二选择。 Apache并不是没有缺点,它最为诟病的一转载 2017-07-11 10:34:33 · 278 阅读 · 0 评论 -
PHP内核探索:嵌入式PHP
从PHP源码目录结构的介绍以及PHP生命周期可知:嵌入式PHP类似CLI,也是SAPI接口的另一种实现。 一般情况下,它的一个请求的生命周期也会和其它的SAPI一样:模块初始化=>请求初始化=>处理请求=>关闭请求=>关闭模块。 当然,这只是理想情况。因为特定的应用由自己特殊的需求,只是在处理PHP脚本这个环节基本一致。 对于嵌入式PHP或许我们了解比较少,或者说根本用不到,甚至在网上相关的资料转载 2017-07-11 11:10:43 · 1232 阅读 · 0 评论 -
PHP内核探索:PHP的FastCGI
CGI全称是“通用网关接口”(Common Gateway Interface), 它可以让一个客户端,从网页浏览器向执行在Web服务器上的程序请求数据。 CGI描述了客户端和这个程序之间传输数据的一种标准。 CGI的一个目的是要独立于任何语言的,所以CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。 如php,perl,tcl等。 FastCGI是Web服务器和处理程序之转载 2017-07-12 09:07:00 · 243 阅读 · 0 评论 -
PHP内核探索:如何执行PHP脚本
前面介绍了PHP的生命周期,PHP的SAPI,SAPI处于PHP整个架构较上层,而真正脚本的执行主要由Zend引擎来完成, 这一小节我们介绍PHP脚本的执行。 目前编程语言可以分为两大类: 第一类是像C/C++, .NET, Java之类的编译型语言, 它们的共性是:运行之前必须对源代码进行编译,然后运行编译后的目标文件。第二类比如PHP, Javascript, Ruby, Python转载 2017-07-12 09:08:34 · 983 阅读 · 0 评论 -
ajax上传问题
上传不会有太大的问题,可是问题是什么呢? 今天我在做项目的ajax图片上传是遇到一个问题,看看大家有没有类似的经历: 1.异步上传(没有问题) 2.问题来了,我在一个表单中使用ajax上传,如果是新增的信息,我们数据库中还没有生成相应的ID,这时候图片上传在数据库中就找不到相应的位置,图片虽然上传成功,但是跟我们表单提交的信息对应不起来,这是个严重的bug, 针对上述问题怎么解决呢?我说下原创 2017-09-07 18:02:12 · 488 阅读 · 0 评论
分享