摘要:
概述 在5.2及更早版本的PHP中,没有专门的垃圾回收器GC(Garbage Collection),引擎在判断一个变量空间是否能够被释放的时候是依据这个变量的zval的refcount的值,如果refcount为0,那么变量的空间可以被释放,否则就不释放,这是一种非常简单的GC实现。然而在这种简单 阅读全文
摘要:
原文链接:http://www.orlion.ga/711/ 一、安装 然后修改php.ini,加上: 如果php-fpm启动的话就重启。 二、使用 将xhprof解压包中的xhprof_html目录和xhprof_lib目录复制到服务器web目录或者是项目目录或者是其他任何php有权限能访问到的目 阅读全文
摘要:
原文链接:http://www.orlion.ga/731/ php用clone复制对象有一个问题,下面用代码来说明问题: 输出是: 输出说明了一个问题:$cloneFoo->bar->name = 'new bar obj';这句话本意是想把$cloneFoo中的$bar的name修改了。但是却顺 阅读全文
摘要:
原文链接:http://www.orlion.ga/689/ 好久之前就知道有这么个东西,但是一直没用,一直用exit()、var_dump() debug,效率很低。 首先下载xdebug的dll文件(Window环境下)网址是:https://xdebug.org/download.php,此次 阅读全文
摘要:
原文链接:http://www.orlion.ga/1250/ 一、线程 同一进程的多个线程共享同一地址空间,因此Text Segment、Data Segment都是共享的,如果定义一个函数,在个线程中都可以调用,如果定义一个全局变量,在各线程中都可以访问到,除此之外,个线程还共享一下进程资源和环 阅读全文
摘要:
原文链接:http://www.orlion.ga/1227/ 一、概念 unix系统中用户通过终端登录系统后得到一个Shell进程,这个终端成为Shell进程的控制端。控制终端是保存在PCB中的信息,而fork会复制PCB中的信息,因此Shell进程启动的其他进程的控制终端也是这个终端。默认情况下 阅读全文
摘要:
原文链接:http://www.orlion.ga/1126/ 一、阻塞信号 1、信号在内核中的表示 实际执行信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态,称为信号未决(Pending)。进程可以选择阻塞(Block)某个信号。被阻塞的信号产生时将保存在未决状态,直到进 阅读全文
摘要:
原文链接:http://www.orlion.ga/1072/ 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区中把数据读走,内核提供的这种机制称为进程 阅读全文
摘要:
原文链接:http://www.orlion.ga/1122/ 一、信号的概念 一个熟悉的场景: 用户输入命令,在Shell下启动一个前台进程 用户按下Ctrl-C,键盘输入产生一个硬件中断 如果CPU正在执行这个进程的代码,则该进程的用户空间代码暂停执行,CPU从 用户态切换到内核态处理硬件中断 阅读全文
摘要:
原文链接:http://www.orlion.ga/1044/ 一、fork函数 #include <sys/types.h> #include <unistd.h> pid_t fork(void); fork调用失败返回-1。下面通过一个例子来理解fork是怎样创建进程的。 输出 fork-ww 阅读全文