php
Leslie丶
断剑重铸之日,骑士归来之时。
展开
-
【Day19】描述一下大流量高并发量网站的解决方案
1、确认服务器硬件是否足够支持当前的流量。2、使用memcache缓存技术,将动态数据缓存到内存中,动态网页直接调用这些文件,而不必在访问数据库。3、禁止外部的盗链。4、外部网站的图片或者文件盗链往往会带来大量的负载压力,因此应该严格限制外部对自身图片或者文件盗链,目前可以简单的通过refer来控制盗 链,apache自己就可以通过配置来禁止盗链。5、控制大文件的下载。 大文件的下载会占用很大的流量原创 2016-10-11 01:38:39 · 1196 阅读 · 0 评论 -
【Day29】关于Redis
Redis是一个开源的,先进的 key-value 存储可用于构建高性能,可扩展的 Web 应用程序的解决方案。Redis的优点:1.Redis是完全在内存中保存数据的数据库,使用磁盘只是为了持久性目的; 2.Redis相比许多键值数据存储系统有相对丰富的数据类型; 3.Redis可以将数据复制到任意数量的从服务器中;4.异常快速 : Redis是非常快的,每秒可以执行大约110000设置操作,原创 2016-10-21 15:56:36 · 642 阅读 · 0 评论 -
php源码之路第三章第一节( 链表实现)
链表简介 Zend引擎中实现了很多基本的数据结构,这些接口贯穿PHP和Zend引擎的始末,这些数据结构以及相应的操作接口都可以作为通用的接口来使用。本小节再简单描述一下 在Zend引擎中HashTable的使用非常频繁,这得益于他良好的查找性能,如果读者看过前一小节会知道哈希表会预先分配内容以提高性能,而很多时候数据规模不会很大,固然使用哈希表能提高查询性能,但是某些场景下并不会对数据原创 2016-10-21 23:40:57 · 530 阅读 · 0 评论 -
php源码之路第三章第二节( 常量)
常量,顾名思义是一个常态的量值。它与值只绑定一次,它的作用在于有肋于增加程序的可读性和可靠性。在PHP中,常量的名字是一个简单值的标识符,在脚本执行期间该值不能改变。和变量一样,常量默认为大小写敏感,但是按照我们的习惯常量标识符总是大写的。常量名和其它任何 PHP 标签遵循同样的命名规则。 合法的常量名以字母或下划线开始,后面跟着任何字母,数字或下划线。在这一小节我们一起看下常量与我们常见的原创 2016-10-23 01:06:47 · 464 阅读 · 0 评论 -
【Day31】php中json_decode()和json_encode()的使用方法
json_decode对JSON格式的字符串进行编码,而json_encode对变量进行 JSON 编码。1.json_decode() (PHP 5 >= 5.2.0, PECL json >= 1.2.0) json_decode — 对 JSON 格式的字符串进行编码 说明 mixed json_decode ( string $json [, bool $assoc ] ) 接受一个 JS原创 2016-10-23 10:48:53 · 448 阅读 · 0 评论 -
php源码之路第三章第三节( 预定义变量)
在PHP脚本执行的时候,用户全局变量(在用户空间显式定义的变量)会保存在一个HashTable数据类型的符号表(symbol_table)中,而我们用得非常多的在全局范围内有效的变量却与这些用户全局变量不同。例如:$_GET,$_POST,$_SERVER,$_FILES等变量,我们并没有在程序中定义这些变量,并且这些变量也同样保存在符号表中,从这些表象我们不难得出结论:PHP是在脚本运行之前就将这原创 2016-10-23 23:34:21 · 622 阅读 · 0 评论 -
【Day21】关于mysql数据库索引所涉及的一些知识(新)
我们首先了解,数据库的索引是什么?数据库的索引:数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。(什么是B树和B+树,见文章最后。)在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。索引的种类:根据数据库的功原创 2016-10-13 11:04:02 · 1053 阅读 · 0 评论 -
php源码之路第四章第三节(函数的调用和执行)
前面小节中对函数的内部表示以及参数的传递,返回值都有了介绍,那函数是怎么被调用的呢?内置函数和用户定义函数在调用时会有什么不一样呢?下面将介绍函数调用和执行的过程。函数的调用函数被调用需要一些基本的信息,比如函数的名称,参数以及函数的定义(也就是函数的具体执行内容),从我们开发者的角度来看,定义了一个函数我们在执行的时候自然知道这个函数叫什么名字,以及调用的时候给传递了什么参数、函数的操作内容。但是原创 2016-11-04 20:40:06 · 1296 阅读 · 0 评论 -
php源码之路第三章第四节( 静态变量)
通常意义上静态变量是静态分配的,他们的生命周期和程序的生命周期一样,只有在程序退出时才结束期生命周期,这和局部变量相反,有的语言中全局变量也是静态分配的。例如PHP和Javascript中的全局变量。静态变量可以分为:静态全局变量,PHP中的全局变量也可以理解为静态全局变量,因为除非明确unset释放,在程序运行过程中始终存在。 静态局部变量,也就是在函数内定义的静态变量,函数在执行时对变量的操作原创 2016-10-24 23:56:37 · 461 阅读 · 0 评论 -
【Day22】mysql数据库的优化(一版)
mysql数据库优化的目的是什么?mysql优化是多方面的,原则是减少系统的瓶颈,减少资源的占用,增加系统的反应速度。eg. 通过优化文件系统,提高磁盘I/O的读写速度;通过优化操作系统调度策略,提高mysql在高负荷情况下的负载能力;优化表结构、索引、查询语句等使查询响应更快。在mysql中,可以使用show status语句查询一些mysql的性能参数show status like 'valu原创 2016-10-14 13:04:05 · 1605 阅读 · 0 评论 -
php源码之路第四章第四节 (匿名函数及闭包)
匿名函数在编程语言中出现的比较早,最早出现在Lisp语言中,随后很多的编程语言都开始有这个功能了,目前使用比较广泛的Javascript以及C#,PHP直到5.3才开始真正支持匿名函数, C++的新标准C++0x也开始支持了。匿名函数是一类不需要指定标示符,而又可以被调用的函数或子例程,匿名函数可以方便的作为参数传递给其他函数,最常见应用是作为回调函数。闭包(Closure)说到匿名函数,就不得不提原创 2016-11-04 23:44:44 · 1006 阅读 · 0 评论 -
【Day41】php版微信发红包接口用法示例
本文实例讲述了php微信发红包接口用法。分享给大家供大家参考,具体如下:微信红包功能我相信各位朋友都知道吧,但如果我们要把红包集成到网站那么要如何来做呢?这里小编就来为各位分享一个php 微信发红包接口测试实例,希望文章能够帮助到各位朋友下面是一个类,使用方法: $arr['openid']='ojgTTt8oF9VdYcGsJMACHpA-jy1U'; $arr['hb原创 2016-11-05 12:01:38 · 872 阅读 · 0 评论 -
【Day23】几道值得研究注意的php相关问题(一)
1.nginx使用哪种网络协议? nginx是应用层 我觉得从下往上的话 传输层用的是tcp/ip 应用层用的是http fastcgi负责调度进程 2. <? echo 'hello tusheng' ; ?> 没有输出结果, 可能是什么原因, 简述的解决此问题的过程(提示: 语法没有问题) 可能服务器上面没有开启短标签short_open_tag =设置为Off,,php.ini开启短标签原创 2016-10-15 01:33:09 · 1549 阅读 · 0 评论 -
这些git经验够你用一年了(绝对好文!)
使用git在本地创建一个项目的过程$ mkdir ~/hello-world //创建一个项目hello-world$ cd ~/hello-world //打开这个项目$ git init //初始化 $ touch README$ git add README //更新README文件$ git commit -m 'first转载 2016-10-15 11:22:33 · 2378 阅读 · 0 评论 -
php源码之路第五章第一节 ( 类和面向对象)
面向对象是一种编程范式,它将对象作为程序的基本单元,将程序和数据封装起来,以此来提高程序的重用性、灵活性和可扩展性。 目前很多语言都支持面向对象编程,既然对象对象是一种范式,其实这就和具体的编程语言没有直接关系,只不过很多语言将这个范式作为语言的基本元素,使用C语言也能够进行面向对象编程。 面向对象的程序设计中包含:类。类是具体事物的抽象。通常类定义了事物的属性和所能完成的工作。有一点需原创 2016-11-06 00:06:13 · 1281 阅读 · 0 评论 -
php源码之路第三章第五节( 类型提示的实现)
PHP是弱类型语言,向方法传递参数时候也并不严格检查数据类型。不过有时需要判断传递到方法中的参数,为此PHP中提供了一些函数,来判断数据的类型。比如is_numeric(),判断是否是一个数值或者可转换为数值的字符串,比如用于判断对象的类型运算符:instanceof。 instanceof 用来测定一个给定的对象是否来自指定的对象类。instanceof 运算符是 PHP 5 引进的。在此之前是使原创 2016-10-25 23:52:21 · 823 阅读 · 0 评论 -
【Day32】mysql中事务的一些注意的地方
最近很多朋友都在讨论mysql事务的问题,记得以前在博客中提过,今天我们详细的总结一下mysql的事务机制,首先从概念,属性,使用方法,优点几个方面来说:概念:那什么是事务呢, 事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个MySQL语句是相互依赖的。而整个单独单元作为一个不可分割的整体,如果单元中某条SQL语句一旦执行失败或产生错误,整个单元将会回滚。所有受到影响的数据将返回到事物开原创 2016-10-26 10:34:39 · 668 阅读 · 0 评论 -
【Day20】数据库中的事务是什么 ?
事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。 ![传统方式](http://img.blog.csdn.net/20161012144515902)![事务机制](htt原创 2016-10-12 14:08:08 · 723 阅读 · 0 评论 -
php源码之路第一章(环境配置及常用代码)
从今天开始正式学习php的内核源码,没有想象的那么简单,放平心态,慢慢来。 --------写给自己的话 首先源码手册及下载的网址是:http://www.php-internals.com/我们的一些准备工作和环境配置:在开始学习PHP实现之前,我们需要一个实验和学习的环境。下面介绍一下怎样在*nix环境下准备和搭建PHP环境。(原创 2016-10-16 00:21:08 · 2271 阅读 · 0 评论 -
【Day24】几道值得研究注意的php相关问题(二)
18. 现有一个函数, 有不确定多少个的参数(可能有5个也可能有50个), 如何去定义这个函数 方法一: 不借助php内置函数 方法二: 提示func_num_args() func_get_arg() unc_get_args() function param() { $numargs = func_num_args(); echo "Number of arguments: $num原创 2016-10-16 00:34:23 · 1161 阅读 · 0 评论 -
php源码之路第五章第二节 ( 类的成员变量及方法)
我们之前介绍了类的结构和声明过程,从而,我们知道了类的存储结构,接口抽象类等类型的实现方式。在本小节,我们将介绍类的成员变量和成员方法。首先,我们看一下,什么是成员变量,什么是成员方法。类的成员变量在PHP中本质上是一个变量,只是这些变量都归属于某个类,并且给这些变量是有访问控制的。类的成员变量也称为成员属性,它是现实世界实体属性的抽象,是可以用来描述对象状态的数据。类的成员方法在PHP中本质上是一原创 2016-11-06 23:52:41 · 1308 阅读 · 0 评论 -
【Day43】PHP中用PDO查询Mysql来避免SQL注入风险的方法
当我们使用传统的 mysql_connect 、mysql_query方法来连接查询数据库时,如果过滤不严,就有SQL注入风险,导致网站被攻击,失去控制。虽然可以用mysql_real_escape_string()函数过滤用户提交的值,但是也有缺陷。而使用PHP的PDO扩展的 prepare 方法,就可以避免sql injection 风险。PDO(PHP Data Object) 是PHP5新原创 2016-11-07 14:38:31 · 514 阅读 · 0 评论 -
关于memcache和Redis的区别和总结
Redis和Memcached整体对比1)性能对比:由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化,但是比起 Memcached,还是稍有逊色。2)内存使用效率对比:使用简单的key-value存储的话原创 2016-10-17 02:09:23 · 7162 阅读 · 0 评论 -
php源码之路第二章第一节(生命周期和zend引擎)
我们先从整体上来接触PHP的实现,先对PHP的整体结构,生命周期,PHP与其它容器(如Apache)的交互, PHP的整个执行过程等进行一个大概的了解,从而有一个整体的概念。PHP本身实现了把用户的逻辑“翻译”为机器语言来执行的功能,这也是各种编译语言与承载具体业务逻辑的程序代码的一个明显区别。于是PHP就多出一个把用户代码“翻译”成具体操作的步骤:词法分析、语法分析 我们会从以下四个方面进行原创 2016-10-17 13:53:59 · 1823 阅读 · 0 评论 -
php源码之路第五章第三节 (访问控制的实现)
面向对象的三大特性(封装、继承、多态),其中封装是一个非常重要的特性。封装隐藏了对象内部的细节和实现,使对象能够集中而完整的描述并对应一个具体的事物,只提供对外的访问接口,这样可以在不改变接口的前提下改变实现细节,而且能使对象自我完备。除此之外,封装还可以增强安全性和简化编程。在面向对象的语言中一般是通过访问控制来实现封装的特性。 PHP提供了public、protected及private三个层次原创 2016-11-07 21:13:03 · 693 阅读 · 0 评论 -
【Day44】一次完整的浏览器请求流程
当我们在浏览器的地址栏输入www.baidu.com,然后回车,回车这一瞬间到看到页面到底发生了什么呢?整个流程如下:域名解析 发起TCP的3次握手 建立TCP连接后发起http请求服务器响应http请求,浏览器得到html代码浏览器解析html代码,并请求html代码中的资源(如js、css、图片)浏览器对页面进行渲染呈现给用户以下就是上面过程的一一分析,我们就以Chrome浏览器为例转载 2016-11-08 11:31:05 · 854 阅读 · 0 评论 -
php源码之路第二章第二节(SAPI概述之Apache模块)
生命周期的各个阶段,SAPI接口关系到很多服务的操作的实现,这些内置实现的物理位置在PHP源码的SAPI目录。这个目录存放了PHP对各个服务器抽象层的代码,例如命令行程序的实现,Apache的mod_php模块实现以及fastcgi的实现等等。各个服务器抽象层之间遵守着相同的协议,我们称之为SAPI的接口。以cgi模式和apache2服务器为例,它们的启动方法如下:cgi_sapi_module.原创 2016-10-18 02:50:24 · 1406 阅读 · 2 评论 -
【Day33】Apache服务器的负载平衡
我们首先介绍一下什么是负载平衡:负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。 负载平衡的作用是什么呢?如果你发现你的Web站点负载量非常大时,应当考虑使用负载均衡技术来将负载平均分摊到多个内部原创 2016-10-27 22:37:12 · 541 阅读 · 0 评论 -
php源码之路第三章第六节( 变量的生命周期之变量的赋值和销毁)
我们知道了PHP中变量的存储方式——所有的变量都保存在zval结构中。下面我们将介绍一下PHP内核如何实现变量的定义方式以及作用域。变量的生命周期在ZE进行词法和语法的分析之后,生成具体的opcode,这些opcode最终被execute函数(Zend/zend_vm_execute.h:46)解释执行。在excute函数中,有以下代码:while (1) { ... if ((原创 2016-10-28 01:32:44 · 619 阅读 · 0 评论 -
【Day26】include require include_once require_once 的区别深度总结
这个问题遇到过很多次了,今天在这里再总结一次。引用文件的方法有两种:require 及 include。require 的使用方法如 require("file.php"); 。这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。include 使用方法如 inclu原创 2016-10-18 16:05:27 · 633 阅读 · 0 评论 -
php源码之路第五章第四节 (类的继承,多态及抽象类)
面向对象的三大特性(封装、继承、多态),在前一小节介绍了封装,这一小节我们将介绍继承和多态的实现。继承继承是一种关联类的层次模型,它可以建立类之间的关系,并实现代码重用,方便系统扩展。继承提供了一种明确表述共性的方法,是一个新类从现有的类中派生的过程。继承产生的新类继承了原始类的特性,新类称为原始类的派生类(或子类),而原始类称为新类的基类(或父类)。派生类可以从基类那里继承方法和变量,并且新类可原创 2016-11-08 22:48:21 · 1339 阅读 · 0 评论 -
php源码之路第二章第二节(SAPI概述之嵌入式)
嵌入式PHP类似CLI,也是SAPI接口的另一种实现。一般情况下,它的一个请求的生命周期也会和其它的SAPI一样:模块初始化=>请求初始化=>处理请求=>关闭请求=>关闭模块。当然,这只是理想情况。因为特定的应用由自己特殊的需求,只是在处理PHP脚本这个环节基本一致。#include <sapi/embed/php_embed.h>#ifdef ZTS void ***tsrm_ls;原创 2016-10-18 23:11:11 · 1079 阅读 · 0 评论 -
php源码之路第二章第二节(SAPI概述之FastCGI)
CGI全称是“通用网关接口”(Common Gateway Interface),它可以让一个客户端,从网页浏览器向执行在Web服务器上的程序请求数据。 CGI描述了客户端和这个程序之间传输数据的一种标准。 CGI的一个目的是要独立于任何语言的,所以CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等。FastCGI是Web服务器和处理程序之间通信的一原创 2016-10-19 03:12:26 · 1395 阅读 · 0 评论 -
php源码之路第三章第六节( 变量的作用域和global语句)
变量的作用域是变量的一个作用范围,在这个范围内变量为可见的,即可以访问该变量的代码区域,相反,如果不在这个范围内,变量是不可见的,无法被调用。全局变量可以将作用范围看作为整个程序。代码如下: <?php $foo = 'tipi'; function variable_scope(){ $foo = 'foo';原创 2016-10-28 21:25:16 · 965 阅读 · 0 评论 -
php源码之路第五章第五节 ( 魔术方法,延迟绑定及静态成员)
PHP中有一些特殊的函数和方法,这些函数和方法相比普通方法的特殊之处在于: 用户代码通常不会主动调用,而是在特定的时机会被PHP自动调用。在PHP中通常以"__"打头的方法都作为魔术方法, 所以通常不要定义以"__"开头的函数或方法。例如:__autoload()函数, 通常我们不会手动调用这个函数, 而如果在代码中访问某个未定义的方法, 如过已经定义了__autoload()函数,此时PHP将会尝原创 2016-11-09 23:08:54 · 1268 阅读 · 0 评论 -
【Day34】PHP递归实现无限级分类
在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性。那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类。 递归,简单的说就是一段程序代码的重复调用,当把代码写到一个自定义函数中,将参数等变量保存,函数中重复调用函数,直到达到某个条件才跳出,返回相应的数据。 首先我们准备一张数据表class,记录商品分类信息。表中有三个字原创 2016-10-29 12:45:29 · 526 阅读 · 0 评论 -
php源码之路第五章第六节 (PHP保留类及特殊类)
在面向对象语言中,都会内置一些语言内置提供的基本功能类,比如JavaScript中的Array,Number等类, PHP中也有很多这种类,比如Directory,stdClass,Exception等类,同时一些标准扩展比如PDO等扩展中也会定义一些类, PHP中类是不允许重复定义的,所以在编写代码时不允许定义已经存在的类。 同时PHP中有一些特殊的类:self,static和parent,原创 2016-11-10 14:17:20 · 1399 阅读 · 0 评论 -
【Day46】CentOS中安装了MySQL 5.7后忘记密码问题解决
在CentOS中安装好了MySQL 5.7之后,发现密码不知道。不要紧,直接重置密码。1.修改配置文件my.cfg[root@localhost ~]# vi /etc/my.cnf找到mysqld在之后添加skip-grant-tables保存退出重启mysql服务service mysqld restart3.直接登陆mysql而不需要密码mysql -u root (直接点击回车)4原创 2016-11-10 19:51:15 · 1143 阅读 · 0 评论 -
php源码之路第三章第一节( 变量及数据类型之哈希表)终于终于终于等到你!
现代编程语言中的基本元素主要有:变量,流程控制接口,函数等等。我们能否不使用变量来编写程序呢?这显然是可以的,例如:<?phpecho "Hello TIPI Readers";就和我们仅仅使用二进制也能编程一样,不使用变量也能完成某些工作,不使用变量我们的程序将会非常难以编写和维护,变量可以让我们将值存储起来,以便在程序的其他地方使用,或者通过计算保存新的值。变量具有三个基本组成部分:名称原创 2016-10-20 01:48:34 · 1691 阅读 · 0 评论 -
php源码之路第三章第七节( 数据类型的转化)
PHP是弱类型的动态语言,在前面的章节中我们已经介绍了PHP的变量都存放在一个名为ZVAL的容器中, ZVAL包含了变量的类型和各种类型变量的值。 PHP中的变量不需要显式的数据类型定义,可以给变量赋值任意类型的数据, PHP变量之间的数据类型转换有两种: 隐式和显式转换。隐式类型转换隐式类型转换也被称为自动类型转换,是指不需要程序员书写代码,由编程语言自动完成的类型转换。在PHP中,我们经常遇到的原创 2016-10-30 16:48:25 · 608 阅读 · 0 评论