PHP
文章平均质量分 80
ohmygirl
这是一首简单的小情歌。
最近补习内容:c, 数据结构、算法导论、深入理解Linux内核、PHP EAE、UNIX环境高级编程。
展开
-
【备忘录-网络】常见HTTP状态值
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:1xx:指示信息--表示请求已接收,继续处理2xx:成功--表示请求已被成功接收、理解、接受3xx:重定向--要完成请求必须进行更进一步的操作4xx:客户端错误--请求有语法错误或请求无法实现5xx:服务器端错误--服务器未能实现合法的请求200 OK指示客服端的请求已经成功收到,解析,接转载 2011-10-31 17:48:36 · 2059 阅读 · 2 评论 -
【PHP】对象遍历
我们知道,php中,foreach可以很方便地对可迭代结构(例如数组,再如对象)进行迭代操作:foreach( $array as $elem){ var_dump($elem);}foreach($obj as $key=>$value){ echo "$key=>$value".PHP_EOL;}因而我们想:如果对于一个实例化对象,对其进行foreach操作,会发生什么事情原创 2013-03-31 20:13:28 · 5144 阅读 · 0 评论 -
CI框架源码阅读笔记7 配置管理组件 Config.php
原文见这里:http://www.cnblogs.com/ohmygirl/p/CIRead-7.html 一个灵活可控的应用程序中,必然会存在大量的可控参数(我们称为配置),例如在CI的主配置文件中(这里指Application/Config/Config.php文件),有如下多项配置:$config['base_url'] = 'http://test.xq.com';$原创 2014-11-12 12:00:44 · 8293 阅读 · 0 评论 -
CI框架源码阅读笔记3 全局函数Common.php
从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现、结构和设计。 Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap引导文件都会最先引入全局函数,以便于之后的处理工作)。 打开Common.php中,第一行代码就非常诡异:if ( ! defined('BASEPATH')) exit('No原创 2014-10-30 22:47:09 · 8241 阅读 · 3 评论 -
CI框架源码阅读笔记8 控制器Controller.php
最近时间有些紧,源码阅读系列更新有些慢。鉴于Controller中代码比较少,本次Blog先更新该文件的源码分析。 在经过路由分发之后,实际的应用Controller接管用户的所有请求,并负责与用户数据的交互。CI中所有的应用控制器都应该是CI_Controller的子类(除非你扩展了CI的核心,那么你的Controller父类可以是MY_Controller)。 在应用程序控制器中,原创 2014-11-19 21:20:29 · 6940 阅读 · 2 评论 -
CI框架源码阅读笔记4 引导文件CodeIgniter.php
到了这里,终于进入CI框架的核心了。既然是“引导”文件,那么就是对用户的请求、参数等做相应的导向,让用户请求和数据流按照正确的线路各就各位。例如,用户的请求url: http://you.host.com/usr/reg 经过引导文件,实际上会交给Application中的UsrController控制器的reg方法去处理。 这之中,CodeIgniter.php做了哪些工作原创 2014-11-04 17:59:11 · 6705 阅读 · 1 评论 -
CI框架源码阅读笔记9 CI的自动加载机制autoload
本篇并不是对某一组件的详细源码分析,而只是简单的跟踪了下CI的autoload的基本流程。因此,可以看做是Loader组件的分析前提。CI框架中,允许你配置autoload数组,这样,在你的应用程序初始化时,会自动加载相应的类库,例如,在application/config/autoload.php中,autoload的配置如下:$autoload['libraries'] = a原创 2014-11-23 14:38:50 · 16315 阅读 · 2 评论 -
PHP内核探索之变量(2)-理解引用
本文主要内容:引论符号表与zval引用原理回到最初的问题一、引论 很久之前写了一篇关于引用的文章,当时写的寥寥草草,很多原理都没有说清楚。最近在翻阅Derick Rethans(home:http://derickrethans.nl/ Github:https://github.com/derickr)大牛之前做的报告时,发现了一篇讲解PHP引用机制的文章,也就是这个P原创 2014-11-28 17:47:26 · 4412 阅读 · 1 评论 -
CI框架源码阅读笔记5 基准测试 BenchMark.php
上一篇博客(CI框架源码阅读笔记4 引导文件CodeIgniter.php)中,我们已经看到:CI中核心流程的核心功能都是由不同的组件来完成的。这些组件类似于一个一个单独的模块,不同的模块完成不同的功能,各模块之间可以相互调用,共同构成了CI的核心骨架。 从本篇开始,将进一步去分析各组件的实现细节,深入CI核心的黑盒内部(研究之后,其实就应该是白盒了,仅仅对于应用来说,它应该算是黑盒),原创 2014-11-07 00:21:24 · 4048 阅读 · 0 评论 -
PHP内核探索之变量(5)- session的基本原理
这次说说session. session可以说是当前互联网提到的最多的名词之一了。它的含义很宽泛,可以指任何一次完整的事务交互(会话):如发送一次HTTP请求并接受响应,执行一条SQL语句都可以看做一次Session。如无特殊说明,本文中提到的Session单指HTTP会话。本文是PHP内核探索的第五篇,主要包含如下几个方面的内容:背景知识和session基础PHP中sessio原创 2015-01-26 15:13:37 · 7633 阅读 · 1 评论 -
PHP内核探索之变量(3)- hash table
在PHP中,除了zval, 另一个比较重要的数据结构非hash table莫属,例如我们最常见的数组,在底层便是hash table。除了数组,在线程安全(TSRM)、GC、资源管理、Global变量、ini配置管理中,几乎都有Hash table的踪迹(上一次我们也提到,符号表也是使用Hash table实现的)。那么,在PHP中,这种数据有什么特殊之处,结构是怎么实现的? 带着这些问题,我们开原创 2014-12-18 21:32:03 · 3627 阅读 · 6 评论 -
PHP内核探索之变量(4)- 数组操作
上一节(PHP内核探索之变量(3)- hash table),我们已经知道,数组在PHP的底层实际上是HashTable(链接法解决冲突),本文将对最常用的函数系列-数组操作的相关函数做进一步的跟踪。本文主要内容:PHP中提供的数组操作函数数组操作函数的实现结语参考文献一、PHP中提供的数组操作函数可以说,数组是PHP中使用最广泛的数据结构之一,正因如此,PHP为开发者提供原创 2014-12-25 14:33:07 · 4848 阅读 · 0 评论 -
PHP内核探索之变量(6)- 后续内核探索系列大纲备忘
年前因为工作比较饱和,现在又忙着换工作的事情,基本停止了对博文的更新。后续的博文,还是慢慢补上吧。为了不至于过于发散,先搞个未成形的大纲,如下: PHP内核探索之变量 不平凡的字符串 PHP内核探索之变量 变量的生命周期、类型转换 PHP内核探索之变量 变量的循环(foreach,其实放到Zend部分更加合理一些) PHP内核探索之SAPI (比较疑惑,为什么这么靠后?原创 2015-03-16 17:41:37 · 1754 阅读 · 0 评论 -
PHP内核探索之变量(7)- 不平凡的字符串
切,一个字符串有什么好研究的。别这么说,看过《平凡的世界》么,平凡的字符串也可以有不平凡的故事。试看:(1) 在C语言中,strlen计算字符串的时间复杂度是?PHP中呢?(2) 在PHP中,怎样处理多字节字符串?PHP对unicode的支持如何?同样是字符串,为什么c语言与C++/PHP/Java的均不相同?数据结构决定算法,这句话一点不假。那么我原创 2015-03-30 17:15:54 · 4044 阅读 · 1 评论 -
PHP内核探索之变量(1)变量的容器-Zval
作为数据的容器,我们常常需要跟变量打交道,不管这个变量是数字、数组、字符串、对象还是其他,因而可以说变量是构成语言的不可或缺的基础。本文是PHP内核探索之变量的第一篇,主要介绍zval的基本知识,包括如下几个方面的内容:Zval的基本结构查看zval的方法:debug_zval_dump和xdebugZval的原理,COW等由于写作仓促,难免会有错误,欢迎指出。一、Zval的基本结原创 2014-11-27 10:21:00 · 11185 阅读 · 1 评论 -
《构建高性能web站点》读书随笔目录
《构建高性能web站点》读书笔记1 减少网页中的HTTP请求数《构建高性能web站点》读书笔记2 服务器的并发处理能力,ab测试等《构建高性能web站点》读书笔记3 持久连接keep-alive《构建高性能web站点》读书笔记4 长连接 WebSocket《构建高性能web站点》读书笔记5 网络I/O模原创 2015-03-27 17:17:52 · 1836 阅读 · 0 评论 -
一次冗长繁琐的排错经历
一次冗长繁琐的排错经历白白忙活了一个下午+半个早饭的时间。感慨一下, 解决问题的思路很重要啊,否者就会像无头苍蝇一样,到处乱撞。因项目关系,需要在测试环境中开启https,悲剧的是,在经过了机器迁移之后,之前可用的https连接失败了: 而Nginx中也只有寥寥几行的错误日志: 这里首先说明一下,Nginx对HTTPs的支持是通过Module ngx_http_ssl_mo原创 2015-07-24 18:45:27 · 4795 阅读 · 0 评论 -
CI框架源码阅读笔记2 一切的入口 index.php
上一节(CI框架源码阅读笔记1 - 环境准备、基本术语和框架流程)中,我们提到了CI框架的基本流程,这里这次贴出流程图,以备参考: 作为CI框架的入口文件,源码阅读,自然由此开始。在源码阅读的过程中,我们并不会逐行进行解释,而只解释核心的功能和实现。1. 设置应用程序环境define('ENVIRONMENT', 'development');这里原创 2014-10-26 20:46:22 · 5628 阅读 · 0 评论 -
CI框架源码阅读笔记1 - 环境准备、基本术语和框架流程
最开始使用CI框架的时候,就打算写一个CI源码阅读的笔记系列,可惜虎头蛇尾,一直没有行动。最近项目少,总算是有了一些时间去写一些东西。于是准备将之前的一些笔记和经验记录下来,一方面权作备忘,另一方面时刻提醒自己:借鉴和学习才有出路,忘记过去意味着背叛!基本术语说明 在本文开始之前,有必要对文中反复出现的术语做一个简单的说明,如果你对这一部分已经熟谙,完全可以略过。本文中反复出现和提及的术原创 2014-10-25 23:26:36 · 5696 阅读 · 0 评论 -
【PHP】 foreach循环中变量引用的一道面试题
朋友昨天去金山面试PHP开发时遇到的一道面试题,是关于引用和foreach循环的。很基础的一道题废话不多说,直接看代码:$a = array('a','b','c');foreach($a as &$v){}foreach($a as $v){}var_dump($a);现在。不要打开浏览器,猜测一下。输出的结果是什么?对引用比较了解的童鞋可能已经看出来了。正确答案原创 2013-03-27 16:56:27 · 14027 阅读 · 4 评论 -
【转载】收集到一份中文注释版的PHP.ini配置
收集到一份中文注释版的PHP.ini配置。英文很差的童鞋可以参考下。适用于PHP 5.2;;;;;;;;;;;;;;;;;; 关于php.ini ;;;;;;;;;;;;;;;;;;;; 这个文件必须命名为'php.ini'并放置在httpd.conf中PHPINIDir指令指定的目录中。; 最新版本的php.ini可以在下面两个位置查看:; http://cvs转载 2013-02-19 16:05:00 · 2320 阅读 · 0 评论 -
【转载】Apache查看连接数和限制当前的连接数
起因:线上的一台服务器,最近总是出现 访问 很慢的情况发生,点击一个链接要2秒钟以上才能打开,按照我们对于访问人数的估计,服务器应该不至于响应这么慢,从而需要针对这个问题进行分析,来解决网站访问过慢。分析:1、首先,在页面访问变慢情况发生时,使用 top 命令查看了服务器的负载情况,发现负载并不高,初步估计不是程序的问题。 2、然后,查看了线程中的 httpd 的数量, ps -aux转载 2012-10-06 20:20:55 · 6381 阅读 · 0 评论 -
CI框架源码阅读笔记6 扩展钩子 Hook.php
CI框架允许你在不修改系统核心代码的基础上添加或者更改系统的核心功能(如重写缓存、输出等)。例如,在系统开启hook的条件下(config.php中$config['enable_hooks'] = TRUE;),通过添加特定的钩子,可以让系统在特定的时刻触发特定的脚本:$hook['post_system'] = array( 'class' => 'frameLog',原创 2014-11-09 14:33:07 · 8435 阅读 · 1 评论 -
【PHP】GD库笔记 初探GD库的坐标
昨天在用GD库的imagettftext在图片上写字的时候,发现写字的坐标并不是很精确的按照指定的参数的位置插入字体的,一直觉得很诡异。由于GD库中很多画图操作都是以坐标为基础的,因而就花了点时间了解了一下GD的坐标系统。1.建立画布$im = imagecreatetruecolor(200,200);$im = imagecreatetruecolor(200,200);当然也原创 2013-12-27 21:50:40 · 5339 阅读 · 1 评论 -
【Web优化】Yslow优化法则(三)添加缓存控制首部
添加Expires和Cache-control头部Expire和Cache-control实际上是HTTP中的缓存控制头部,它主要影响客户端的请求行为和服务器端的响应。一.缓存的基本概念这里的缓存,单指web的缓存。当web请求抵达缓存时,如果本地有缓存的副本且缓存未过期,那么就可以从本地读取数据或文档,这样便可以:1. 减少冗余的数据传输,一定程度上减少服务器的流量原创 2014-05-02 11:19:32 · 3636 阅读 · 3 评论 -
【PHP】php 递归、效率和分析
递归的定义 递归(http:/en.wikipedia.org/wiki/Recursive)是一种函数调用自身(直接或间接)的一种机制,这种强大的思想可以把某些复杂的概念变得极为简单。在计算机科学之外,尤其是在数学中,递归的概念屡见不鲜。例如:最常用于递归讲解的斐波那契数列便是一个极为典型的例子,而其他的例如阶层(n!)也可以转化为递归的定义(n! = n*(n-1)!).即使是在原创 2014-02-22 12:51:43 · 17748 阅读 · 2 评论 -
【HTTP】Fiddler(三)- Fiddler命令行和HTTP断点调试
断点调试和命令行原创 2014-01-05 19:40:43 · 145150 阅读 · 19 评论 -
【HTTP】Fiddler(二) - 使用Fiddler做抓包分析
1.查看http请求2.复制、保存和重放http请求3.fiddler命令4.session状态5.设置断点6.模拟http请求7.流模式原创 2014-01-04 23:34:44 · 398527 阅读 · 26 评论 -
【转载】php面试题常见知识点总结
原文地址:http://www.162cm.com/archives/972.html感谢分享。1. 基本知识点HTTP协议中几个状态码的含义:503 500 401 200 301 302。。。Include require include_once require_once 的区别.PHP/Mysql中几个版本的进化史,比如mysql4.0到4.1,PHP 4.x到5.1的转载 2012-10-08 10:48:43 · 2476 阅读 · 0 评论 -
【Web优化】Yslow优化法则(四)启用Gzip压缩
Yslow的第4个经验法则指出:启用gzip压缩功能,可以减少HTTP传输的数据和时间此,从而减少客户端请求的响应时间。本篇是Yslow法则的第四个,主要包括三个方面的内容:1. 什么是gzip2. gzip与HTTP3. nginx启用gzip什么是gzip?Gzip最早出现在Unix系统中,是GNU的文件压缩工具。我们今天所原创 2014-05-08 12:32:29 · 4730 阅读 · 3 评论 -
【PHP】nginx下file_get_contents导致cpu 100%的问题
昨天早上,线上主站点(nginx + fastcgi)大图详情页面打开缓慢,出现了很多502和504的错误,且服务器压力过大,几乎处于拒绝服务状态。Top命令查看服务器的资源使用情况,发现cpu飙升到100%且持续1-2分钟居高不下。而且,打开nginx的错误日志,发现有很多请求都是如下的状态:由于大图详情页面并没有需要消耗cpu资源的计算,只有获取图片信息和相关推荐及评论的逻辑,因而原创 2014-01-28 18:25:27 · 11012 阅读 · 2 评论 -
【HTTP】Fiddler(一) - Fiddler简介
1.为什么是Fiddler?抓包工具有很多,小到最常用的web调试工具firebug,达到通用的强大的抓包工具wireshark.为什么使用fiddler?原因如下:a.Firebug虽然可以抓包,但是对于分析http请求的详细信息,不够强大。模拟http请求的功能也不够,且firebug常常是需要“无刷新修改”,如果刷新了页面,所有的修改都不会保存。b.Wireshark是通用的原创 2014-01-04 18:54:12 · 443528 阅读 · 43 评论 -
【转载】PHP版本讲解
原文地址:http://www.admin10000.com/document/56.htmlPHP版本目前主要有分三支:PHP4/PHP5/PHP6PHP4由于太古老、对OO支持不力已基本被淘汰,不用考虑PHP4。PHP6由于基本没有生产线上的应用,还基本只是一款概念产品,很多功能已在PHP5.3上实现,所以暂不考虑PHP6。PHP5的版本目前主要分三支:PHP5.2转载 2013-02-19 16:20:51 · 2102 阅读 · 1 评论 -
【转载】浅析http协议、cookies和session机制、浏览器缓存
原文地址:http://www.phpben.com/?post=77浅析http协议、cookies和session机制、浏览器缓存最近几天在复习http协议中headers,cookies、session、缓存等相关知识,发现些新知识点。这篇文章注重结合PHP去理解这些内容,也就是比较注重实践部分。一、 http headers转载 2013-01-29 20:56:53 · 2232 阅读 · 0 评论 -
【PHP】php ipv4常用功能封装
<?php/** * @author :xiaoqing.huo * @date :2012-12-05 * @param :$ip==>ipv4 address,$netBit==>mask bits */class IpConfigure{ private $ip; private $netBit; public function __construct($ip,$原创 2012-12-06 09:58:41 · 2118 阅读 · 0 评论 -
一次Debug过程的思考
前一段时间,部门接入了新业务,由于业务量小,架构非常简单,采用了最简单的LNMP架构,整个项目是交给一个刚毕业的RD负责的,这是背景。 上线前半天,服务平稳运行。下午的时候,开始收到大量报警:No host could be connected in the cluster。第一反应:mysql服务器不会挂了吧。打开监控,一切正常,登录也一切正常,但报警一直没有间断,这奇怪了。原创 2016-08-02 10:35:59 · 1982 阅读 · 0 评论