php积累
皮子2
水滴石穿...
展开
-
php 5.3.10 error日志时间bug
首先讲解一下php5.3.10 和 php.5.4.28 中 打印php_error_docref 函数执行流程(方便大家自己快速阅读定位源码,此函数 会打印日志到php.ini 配置文件中error_log指令配置的日志一条记录:) 例如 php_error_docref(NULL TSRMLS_CC, E_NOTICE, "redis RINIT..."); 打印结果:[23原创 2015-10-23 10:35:40 · 839 阅读 · 0 评论 -
php 函数调用引用计数影响
function func2($a){ xdebug_debug_zval('a');}function func($b){ func2($b); debug_zval_dump($b); xdebug_debug_zval('b'); $b = 1; xdebug_debug_zval('b');}原创 2016-01-19 20:46:59 · 423 阅读 · 0 评论 -
php 获取大文件行数
$fp = new SplFileObject($fileName, "rb"); $fp->seek(filesize($fp)); $num = $fp->key();原创 2015-12-23 10:51:12 · 537 阅读 · 0 评论 -
在PHP代码中经常能看到一些类似PG(), EG()之类的函数,他们都是PHP中定义的宏,这系列宏主要的作用是解决线程安全所写的全局变量包裹宏, 如$PHP_SRC/main/php_globals.
http://www.php-internals.com/portable/print.php?p=chapt04/04-03-function-call转载 2015-11-27 10:09:24 · 874 阅读 · 0 评论 -
php $_GET $_POST $_COOKIE取值过程
$_GET 浏览器会自动urlencode name和value 服务端php取值后注册到 全局符号表EG(sysmbol)中 前会先url_decode (注意post main等工具没有对get请求参数做urlencode处理过程)$_COOKIE和$_GETleis$_POST 在服务端php源码暂时没有看到 urldecode 当时实际测试 发现有这个过程经验:原创 2015-12-20 15:57:29 · 1399 阅读 · 0 评论 -
php 函数参数引用和普通变量 传参区别
function func($b) {xdebug_debug_zval('b');//refcount 3debug_zval_dump($b);//refcount 4 函数本身 增加了一个 引用计数}$b = 1;func($b);//未对参数进行拷贝分离操作 因为参数要求和实际传递一致 在函数里面实际写操作时 才进行拷贝分离$a = &b;func($b原创 2016-01-05 15:24:51 · 1410 阅读 · 0 评论 -
php5 php7 变量区别
php5 中变量 zval 都是通过make_std_zval宏从堆上分配#define MAKE_STD_ZVAL(zv) ALLOC_ZVAL(zv)INIT_PZVAL(zv)zv是一个zval指针原创 2016-01-05 16:13:40 · 4608 阅读 · 0 评论 -
php 对象和数组的赋值过程
$a = ['a'=>array('b'=>1)]; var_dump($a);原创 2016-01-07 11:48:47 · 5529 阅读 · 0 评论 -
php 多重继承的替代方案trait
要求php5.4 或者更高版本trait tDebug { public function dumpObject()原创 2016-01-07 12:22:54 · 1193 阅读 · 0 评论 -
php 读取csv大文件问题
SplFileObject 读取csv文件xls 另存为csv文件 (行数是已0 开始)1 linux转换为utf-8格式2 首行 定位错误 $fp->seek(1) $fp->fgetcsv() 从第2行(首行为0)开始 ,并非我们想象的第一行开始 如果使用$fp->curretn() 然后explode(",")则 是从第一行开始3 尾部可能原创 2015-12-24 14:44:56 · 759 阅读 · 0 评论 -
php中error与exception的区别及应用
php中error与exception的区别及应用投稿:shichen2014 字体:[增加 减小] 类型:转载 时间:2014-07-28 我要评论这篇文章主要介绍了php中error与exception的区别及应用,需要的朋友可以参考下error与exception的区别查阅网上资料大多是java的解释,貌似php的异常处理过程与java差不多转载 2016-01-27 20:40:32 · 445 阅读 · 0 评论 -
php5.3 垃圾回收机制
一直以来,reference counting memory mechanisms 引用计数机制都存在这个问题,直到2007年,David F. Bacon和V.T. Rajan 写了一篇论文”Concurrent Cycle Collection in Reference Counted Systems“,解决了这个问题。于是Derick Rethans以及某些人一起,按照这篇论转载 2016-01-05 10:41:22 · 855 阅读 · 0 评论 -
php is_callable method_exists
is_callable 检查是否可调用 例如private 方法不可调用 但是method_exists返回true原创 2016-03-02 11:28:39 · 355 阅读 · 0 评论 -
弱语言变量作用域
python php 等弱语言再函数内部 要想使用全集变量 都需要global 声明这个变量否则都是操作局部变量对于php 来说 进入函数内部 则EG.active_symbol 则是当前函数的 这个ex执行数据的 symbol_table了 由于弱语言具有无需声明即可使用的特点。。因此若内部符号表查找不到这个变量 这直接初始化一个 不会像c++等高级语言那样主动去全局变量符号原创 2016-02-02 20:57:33 · 318 阅读 · 0 评论 -
深入理解php内核
http://www.kancloud.cn/kancloud/php-internals/42753原创 2016-03-29 19:55:29 · 314 阅读 · 0 评论 -
yacc lex使用实例
mysql php python中都是使用这个生成词法分析和语法分析器%{typedef char* string;#define YYSTYPE string%}%token NAME EQ AGE%%file : record file| record;record : NAME EQ AGE {printf("%s is %s years old!转载 2016-03-29 22:15:50 · 957 阅读 · 0 评论 -
php $_SERVER['PHP_SELF'] $_SERVER['SCRIPT_NAME'] $_SERVER['REQUEST_URI']区别
$_SERVER['PHP_SELF'] 和 $_SERVER['SCRIPT_NAME'] location匹配重写后会变成重写后的文件名称$_SERVER['REQUST_URL'] 在nginx 第一步接受到请求 头就已经固定目前测试结果是这样 (至于网上说的PHP_SELF 和SCRIPT_NAME 区别未测试)原创 2016-02-20 11:03:11 · 422 阅读 · 0 评论 -
phalcon pdo封装
例如fetchAll/fetchOne调用 $db = new \Phalcon\Db\Adapter\Pdo()...query (如果有绑定参数(空数组) 调用原生pdo的prepare 执行executePrepare=原生pdo的execute 否则直接调用原生pdo的query函数) 返回一个 PDOStatement对象query->fetch 函数返回结果原创 2016-03-09 11:56:49 · 1113 阅读 · 0 评论 -
fopen w+ w r r+区别
"r"只读读模式——打开文件,从文件头开始读"r+"只读读写模式——打开文件,从文件头开始读写"w"只写写模式——打开文件,从文件头开始读,如果文件已经存在,将删除所有文件已有的内容。如果文件不存在,函数将创建这个文件"w+"只写读原创 2016-03-10 14:54:42 · 1073 阅读 · 0 评论 -
^正则匹配开头
^verb 等价于 ^(verb) 表示在verb开头到空格制表符分割之前 所有字符都是verb^verb(c) 则表示 匹配verb开头 c紧接后台 然后空格制表符..分割符输入verb a 回车后 其实同时匹配 了 三次注意正则匹配中的分割符 不包括换行 空白字符则包括了换行原创 2016-04-06 21:41:16 · 3324 阅读 · 0 评论 -
php 验证邮箱 url 数字等
http://blog.csdn.net/zouhao619/article/details/17761185原创 2016-04-12 17:10:55 · 366 阅读 · 0 评论 -
php扩展函数
http://blog.csdn.net/a600423444/article/details/7028905#define PHP_MINIT_FUNCTION ZEND_MODULE_STARTUP_D#define PHP_MSHUTDOWN_FUNCTION ZEND_MODULE_SHUTDOWN_D#define PHP_RINIT_FUNCTION ZEND_MODU原创 2016-05-31 17:37:24 · 428 阅读 · 0 评论 -
yaf 框架路由解析过程
http://blog.csdn.net/bingqingsuimeng/article/details/20380329概联总结$_SERVER['PATH_INFO'] 可以理解为第一个文件后面的路径信息 PATH_INFO'Contains any client-provided pathname information trailing the actual原创 2016-05-31 19:26:13 · 5927 阅读 · 0 评论 -
php text/html applicaon/json 区别
header("Content-Type: application/json;");echo json_encode($arrRet);exit(0);对于通常的这个ajax返回结果如果木有 设置header("Content-Type: application/json; charset=UTF-8");且返回的结果中有 类似¤cy 这样的信息 ,有可能会被解原创 2016-07-29 13:15:49 · 3241 阅读 · 0 评论 -
四种post 提交数据方式(content-type)
四种常见的 POST 提交数据方式 我们知道,HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。类似于下面这样: 协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式。实际上,开发者完全可以自己决定消息原创 2016-08-05 20:23:06 · 3540 阅读 · 0 评论 -
http_build_query 原理
拼接key=val&key2=val2 后增添urlencode原创 2016-08-19 20:39:18 · 724 阅读 · 0 评论 -
php扩展C++版
php扩展开发指南(C++版)转至元数据结尾转至元数据起始背景:数据通路每天有几T的数据需要处理,其中最耗时间的是schema校验过程,使用php原生代码检验一条数据大概需要3~5ms,假设一条数据大小20k,1T数据有5kw条记录,使用一台机器推送1T数据需要5kw*4ms=200000s,大约2.4天,这样的传输效率远远不能满足业务需求。原创 2016-09-10 22:01:41 · 811 阅读 · 0 评论 -
php curl_multi_exec 一定要在 curl_multi_select之前调用原因分析
curl_multi_exec 本质上是多个套接字同时在发起请求,传输数据 select 多个套接字而单个curl_exec 是直接建立socket 上面封装协议 同步数据传输curl_multi_select 之前木有调用curl_multi_exec 则始终返回-1curl_multi_exec 返回的是整个curl栈状态,及时返回curl_ok 个别curl传输依然是原创 2016-09-11 00:21:52 · 2886 阅读 · 0 评论 -
php扩展 语法示例 (包括较全面的扩展语法)
https://github.com/linkaisheng/edge原创 2016-09-11 00:58:27 · 331 阅读 · 0 评论 -
php require和include区别
equire函数是指包含进来的内容被当成当前文件的一个组成部分,所以当包含进来的文件有语法错误或者文件不存在的时候,那当前文件的PHP脚本都不再执行。include()函数相当于指定这个文件的路径,当被包含的文件有错时,不会影响到本身的程序运行。以上不为手打 出处为 http://www.jb51.net/article/15681.htminclude_once和require原创 2016-08-21 17:54:02 · 283 阅读 · 0 评论 -
php cig fastcgi区别
1、CLI:就是命令行,例如可以在控制台或者是shell中键入命令:1php -f index.php然后获取输出 2、CGI:以下是不同的说法与理解 公共网关接口”(Common Gateway Interface),HTTP服务器 与你的或其它机器上的程序 进行 “交谈”的一种转载 2016-09-19 16:45:41 · 638 阅读 · 0 评论 -
fasctcgi 工作模式
1 maseter-worker (注意apache 和 nginx 中的master只负责管理服务进程 不负责监听)master 负责监听listenworker 负责调用php-cgi原创 2016-09-20 11:27:34 · 433 阅读 · 0 评论 -
php扩展开发与内核应用
http://www.cunmou.com/phpbook/preface.md原创 2016-09-07 21:28:00 · 588 阅读 · 0 评论 -
php socket_recv 和 socket_read
前几天用PHP写一个socket网络服务,在文档里看到socket_read和socket_recv这两个方法时有点晕,乍一看这不是一样的嘛,干吗还要给两个不同的用法呢。看文档没看太明白,看了下源码才搞清楚,在这里记录一下。先看一下这两个函数的声明:复制代码代码如下:string socket_read ( resource $socket , int $lengt转载 2016-10-22 16:36:28 · 5258 阅读 · 2 评论 -
php 嵌套函数 闭包 嵌套函数 + 递归调用的 Fatal错误分析
嵌套函数 定义时 先判断function_exists 防止 递归调用外部函数 导致两次定义内部 函数 导致致命错误看一下PHP手册中是如何说的:<?phpfunction foo(){ function bar() { echo "I don't exist until foo() is called.\n"; }}/* 现在还不能调用bar()函数,因原创 2016-10-21 21:08:06 · 1697 阅读 · 0 评论 -
php socket_write,socket_send,socket_sendto区别
socket_sendto 针对udp套接字发送数据socket_write 类似unix中write函数int socket_write ( resource $socket , string $buffer [, int $length ] )如果length>strlen(buffer) 则截断到strlen(buffer)写仍然有可能是不 超过了进程的缓冲大原创 2016-10-22 23:20:17 · 5468 阅读 · 0 评论 -
php socket 超时设置
$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);socket_set_option($socket,SOL_SOCKET,SO_RCVTIMEO,array("sec"=>1, "usec"=>0 ) );socket_set_option($socket,SOL_SOCKET,SO_SNDTIMEO,array("sec"=>原创 2016-10-23 14:51:43 · 3017 阅读 · 0 评论 -
socket_write socket_send区别
socket_write写到缓冲(本地套接字缓冲) 实际有可能未发送出去socket_send 已经从套接字缓冲发出原创 2016-10-23 15:09:10 · 6686 阅读 · 0 评论 -
python go php 函数参数传递总结
php 参数传递等价赋值操作 数组默认是深度拷贝 ,可以添加&来引用传递 对象默认是浅拷贝 类似引用传递 其他默认是深度拷贝python 所有类型都是对象Python中的对象有可变对象(number,string,tuple等)和不可变对象之分(list,dict等) 1. 不可变对象作为函数参数,相当于C系语言的值传递。 2. 可变对象作为原创 2016-10-12 21:54:19 · 1061 阅读 · 0 评论 -
php 大小写问题
我不是鼓励大家去用这些规则。推荐大家始终坚持“大小写敏感”,遵循统一的代码规范。1. 变量名区分大小写复制代码代码如下: $abc = 'abcd'; echo $abc; //输出 'abcd' echo $aBc; //无输出 echo $ABC; //无输出2. 常量名默认区分大小写,通常都写为大写(但没找到能改变原创 2016-09-28 16:21:40 · 511 阅读 · 0 评论