php 垃圾回收机制

2012-11-2 杜世伟 Php

本文主要讨论PHP5.2和5.3的垃圾回收机制区别。

5.2使用的是“引用计数”方式进行回收。简单地理解的话,就是每个分配的内存区域都有一个计数器,记录有多少个变量指针指向这片内存。当指向该片内存的指针数量为0,那么该片内存区域就可以被回收。

引用计数计数简单,强大,但是有一个致命的缺陷,就是环状引用。考虑以下的代码:

阅读全文>>

标签: PHP

评论(0) 浏览(3821)

PHP的内存泄露问题与垃圾回收

2012-11-2 杜世伟 Php

你写了一个php脚本,一般都不用考虑内存泄露和垃圾回收的问题,因为一般情况下你的脚本很快就执行完退出了。

但在一些运行时间长,数据量大的时候,程序运行一段时间后,php脚本就占用了过多内存,然后就报错(PHP Fatal error: Allowed memory size of 134217728 bytes exhausted)退出了。一般来说,每个页面处理结束,新建的simple_html_dom对象就应该被销毁了——但是实际上没有,很明显,内存泄露发生了。

阅读全文>>

标签: PHP

评论(0) 浏览(4119)

php http_build_query

2012-10-16 杜世伟 Php

http_build_query -- 生成 url-encoded 之后的请求字符串
描述
string http_build_query ( array formdata [, string numeric_prefix])


使用给出的关联(或下标)数组生成一个 url-encoded 请求字符串。参数 formdata 可以是数组或包含属性的对象。一个 formdata 数组可以是简单的一维结构,也可以是由数组组成的数组(其依次可以包含其它数组)。如果在基础数组中使用了数字下标同时给出了 numeric_prefix 参数,此参数值将会作为基础数组中的数字下标元素的前缀。这是为了让 PHP 或其它 CGI 程序在稍后对数据进行解码时获取合法的变量名。

阅读全文>>

标签: PHP http_build_query

评论(0) 浏览(3913)

(转)PHP获取文件后缀名|PHP如何获取文件后缀

2012-10-15 杜世伟 Php

PHP取得文件后缀,关于获取文件的扩展名有很多种方式,下面提供三种获取文件后缀的方法,大家可以研究下,具体代码就不解释了。直接看代码吧。
选好一种记住,以后需要使用的时候就可以直接使用,或者来本站查看本文也是可以滴。

阅读全文>>

标签: PHP

评论(0) 浏览(3594)

命令行执行带参数的php脚本,并取得参数

2012-10-9 杜世伟 Php

一,为什么我们要在命令行下运行php脚本呢?

个人理解,主要有二个原因:

1,利用crontab去跑php,可以给服务器减压,当然在这里有一个条件,就是实时性要求不高。比如:sns中的好友动态,这个实时要求不高,但是数据量比较大,这个时候定时跑的话,会给web服务器,数据库服务器分担不小的压力。

2,就是我们要定时去完成某一事情,比如:我要删除一个月前,用户留言,这个时候,写的php脚本在crontab去执行,一天跑一次就行了。而不是手动去执行php程序。

阅读全文>>

标签: PHP

评论(0) 浏览(3350)

php读取大文件详解

2012-9-25 杜世伟 Php

需求如下: 现有一个1G左右的日志文件,大约有500多万行, 用php返回最后几行的内容。

实现方法:

1. 直接采用file函数来操作
注: 由于 file函数是一次性将所有内容读入内存,而php为了防止一些写的比较糟糕的程序占用太多的内存而导致系统内存不足,使服务器出现宕机,所以默认情况下 限制只能最大使用内存16M,这是通过php.ini里的memory_limit = 16M来进行设置,这个值如果设置-1,则内存使用量不受限制.

下面是一段用file来取出这具文件最后一行的代码.
整个代码执行完成耗时 116.9613 (s).

阅读全文>>

标签: PHP 函数

评论(0) 浏览(3593)

php 数组之和

2012-9-24 杜世伟 Php

php 数值之和或许你没有真正的操作过,一个数值加上一个数组会是什么结果呢?

<?
$a = array('a');
$b = array('b');
$c = $a + $b;
print_r($c);
?>

你猜想下print_r($c);输出的结果:

阅读全文>>

标签: PHP array

评论(0) 浏览(3394)

使用jQuery和PHP实现功能开关效果

2012-9-17 杜世伟 Php

在开发项目中,我们会经常碰到需要及时开启某项功能的情况,通过Ajax实现实时开启和关闭功能,无疑增强了用户体验。本文以360安全卫士的木马防火墙开关为背景,使用PHP、jquery、MYSQL实现了及时开启和关闭产品功能的WEB应用。

阅读全文>>

标签: PHP ajax jquery

评论(0) 浏览(3581)

php函数strstr strrchr substr stristr

2012-9-14 杜世伟 Php

strstr strrchr substr stristr这四个字符串操作函数特别让人容易混淆,我经常用的是substr,strstr,基本上能满足我对字符串的操作。下面举一些例子,做个笔记,以后不要弄混了。


一,strstr和strcchr的区别

strstr 显示第一次找到,要查找的字符串,以及后面的字符串。

strrchr 显示最后一次找到,要查找的字符串,以及后面的字符串。

阅读全文>>

标签: PHP

评论(0) 浏览(3125)

PHP中$GLOBALS变量、global关键字、函数中static关键字详解

2012-9-13 雨寒 Php

在了解PHP变量之前, 我们先看下段式内存管理架构的内存段的划分。通常操作系统会将物理内存划分为以下几个逻辑段:

    1.Text-Segment,这个段最大的特点就是只读。一般存放可执行代码,也有可能常量也存放在这里,比如字符串常量

    2.BSS-Segment,这里存放了那些没有初始化的变量。某种意义来讲,没有初始化的变量都是垃圾,不可用

    3.Data-Segment,这里存放了全局变量和静态变量,直到脚本运行结束,操作系统才会回收这里的内存空间,变量亦会被销毁。

    4.Stack-Heap Segment 函数参数与本地变量(也称局部变量)存放在堆中(stack),还有返回值等等。

阅读全文>>

标签: PHP global static

评论(0) 浏览(3747)

Powered by emlog 沪ICP备2023034538号-1