PHP的垃圾回收机制及session的销毁原理
作者:大鹏 发布于:2013-1-7 0:07 Monday
分类:PHP&MySql
标签: php
虽然自己也是PHP的学习者,但之前还真没怎么了解PHP内部的垃圾回收流程,只是在我们的代码中用了 unset,null,mysql_close,__destruct等等一些函数去释放对象防止内存溢出而已,所以上网GG下,找到了以下一些说明,作 下记录“PHP可以自动进行内存管理,清除不再需要的对象。PHP使用了引用计数(reference counting)这种单纯的垃圾回收(garbage collection)机制。每个对象都内含一个引用计数器,每个reference连接到对象,计数器加1。当reference离开生存空间或被设为 NULL,计数器减1。当某个对象的引用计数器为零时,PHP知道你将不再需要使用这个对象,释放其所占的内存空间。”
每一种计算机语言都有自己的自动垃圾回收机制,让程序员不必过分关心程序内存分配,php也不例外,但是在面向对象编程(OOP)编程中,有些对象需要显式的销毁;防止程序执行内存溢出。
新浪微博API升级到2.0了
作者:大鹏 发布于:2012-12-25 0:50 Tuesday
分类:PHP&MySql
标签: API
新浪微博API升级到2.0了,之前1.0的OAUTH已经无法使用,修改了一下登录的接入代码:
include_once( 'saetv2.ex.class.php' ); $o = new SaeTOAuthV2( WB_AKEY , WB_SKEY ); $o->set_debug( DEBUG_MODE ); // 生成state并存入SESSION,以供CALLBACK时验证使用 $state = uniqid( 'weibo_', true); $_SESSION['weibo_state'] = $state; $code_url = $o->getAuthorizeURL( WB_CALLBACK_URL , 'code', $state );
获取登录用户信息的代码:
include_once( 'saetv2.ex.class.php' ); $c = new SaeTClientV2( WB_AKEY , WB_SKEY , $_SESSION['token']['access_token'] ); $c->set_debug( DEBUG_MODE ); $ms = $c->home_timeline(); // done //var_dump($ms); $uid_get = $c->get_uid(); $uid = $uid_get['uid']; $user_message = $c->show_user_by_id( $uid);//根据ID获取用户等基本信息 var_dump($user_message); ?>
php引用(&)详解及注意事项
作者:大鹏 发布于:2012-3-26 1:42 Monday
分类:PHP&MySql
标签: php
在PHP 中引用的意思是:不同的名字访问同一个变量内容。
与C语言中的指针是有差别的.C语言中的指针里面存储的是变量的内容,在内存中存放的地址。
收藏复习一下。
ThinkPHP学习(三)
作者:大鹏 发布于:2011-4-16 22:46 Saturday 分类:PHP&MySql
1. 缓存修改模版后要及时删除缓存,否则不能生效。
2. 控制器
2.1 变量赋值
注意变量用的'',而非$
$this->assign('str',"Hello ThinkPHP!");
而不是:
$this->assign($str,"Hello ThinkPHP!");
2.2 模版路径
$this->display('default/Index/index'); 不要加后缀(.html或其它),否则报以下错误
模板不存在[./Tpl/default/Index/index.html.html]
2.3 重定向
$this->redirect("index");
2.4 模型对应表
如 $Form = D("Demo");,对应的是 DB_PREFIX.demo表
ThinkPHP学习(二)
作者:大鹏 发布于:2011-4-16 22:43 Saturday 分类:PHP&MySql
ThinkPHP 学习笔记二 模版 收藏1.模版定义
默认的模板文件定义规则是:
模板目录/模板主题/[分组名/]模块名/操作名+模板后缀
模板目录默认是项目下面的Tpl, 模板主题默认是default,模板主题功能是为了多模板切换而设计的,如果有多个模板主题的话,可以用TMPL_DEFAULT_THEME 参数设置默认的模板主题名。
在每个模板主题下面,是以项目的模块名为目录,然后是每个模块的具体操作模板文件,例如:
User模块的add操作 对应的模板文件就应该是:Tpl/default/User/add.html
模板文件的默认后缀的情况是.html,也可以通过TMPL_TEMPLATE_SUFFIX来配置成其他的。
如果项目启用了模块分组功能(假设User模块属于Home分组),那么默认对应的模板文件可能变成 :Tpl/default/Home/User/add.html
2. 模版赋值
要在模板中输出变量,必须在在Action类中把变量传递给模板,视图类提供了 assign方法对模板变量赋值,无论何种变量类型都统一使用assign赋值。
$this->assign('name',$value);
ThinkPHP学习(一)
作者:大鹏 发布于:2011-4-16 22:04 Saturday 分类:PHP&MySql
1. 缓存修改模版时要注意及时删除缓存,否则不能立即生效。
2.命名规范
类文件以.class.php为后缀,驼峰法命名,并且首字母大写,例如DbMysql.class.php。
函数、配置文件等其他类库文件之外的一般是以.php为后缀(第三方引入的不做要求)。
类名和文件名一致,例如 UserAction类的文件命名是UserAction.class.php, InfoModel类的文件名是InfoModel.class.php,
函数的命名使用小写字母和下划线的方式,例如 get_client_ip
Action控制器类以Action为后缀,例如 UserAction、InfoAction
模型类以Model为后缀,例如UserModel、InfoModel
方法的命名使用驼峰法,并且首字母小写,例如 getUserName
属性的命名使用驼峰法,并且首字母小写,例如 tableName
以双下划线“__”打头的函数或方法作为魔法方法,例如 __call 和 __autoload
常量以大写字母和下划线命名,例如 HAS_ONE和 MANY_TO_MANY
配置参数以大写字母和下划线命名,例如HTML_CACHE_ON
语言变量以大写字母和下划线命名,例如MY_LANG,以下划线打头的语言变量通常用于系统语言变量,例如 _CLASS_NOT_EXIST_。
数据表和字段采用小写加下划线方式命名,例如 think_user 和 user_name
特例:在ThinkPHP里面,单字母大写函数,通常是某些操作的快捷定义,或者有特殊的作用。例如,ADSL方法等等
新浪微博API学习(二)
作者:大鹏 发布于:2011-4-7 9:28 Thursday
分类:PHP&MySql
标签: oauth
返回最新n条提到登录用户的微博消息(即包含@username的微博消息)
URL:http://api.t.sina.com.cn/statuses/mentions.(json|xml)
支持格式:XML/JSON
HTTP请求方式:GET
是否需要登录:true
请求数限制:true
请求参数:
新浪微博API学习(一)
作者:大鹏 发布于:2011-4-7 9:27 Thursday
分类:PHP&MySql
标签: oauth
1、statuses/public_timeline 获取最新的公共微博消息
返回最新的20条公共微博。返回结果非完全实时,最长会缓存60秒
url:http://api.t.sina.com.cn/statuses/public_timeline.(json|xml)
支持格式:JSON|XML
HTTP请求方式:GET
是否需要登录:false
请求数限制:true
请求参数:
大量PHP开源信息[收藏]
作者:大鹏 发布于:2008-9-11 23:57 Thursday
分类:PHP&MySql
标签: php 数据库 mysql
WordPress是最热门的开源个人信息发布系统(Blog)之一,基于PHP+MySQL构建。WordPress提供的功能包括:
1.文章发布、分类、归档。
2.提供文章、评论、分类等多种形式的RSS聚合。
3.提供链接的添加、归类功能。
4.支持评论的管理,垃圾信息过滤功能。
5.支持对样式CSS和PHP程序的直接编辑、修改。
6.在Blog系统外,方便的添加所需页面。
7.通过对各种参数进行设置,使你的Blog更具个性化。
8.静态html页面生成。
MagPieRSS中UTF-8和GBK的RSS解析分析
作者:大鹏 发布于:2007-11-6 14:35 Tuesday
分类:PHP&MySql
标签: php
结果中文全为乱码,于是便google了一下,原来是要加这段代码:
if(!defined('MAGPIE_OUTPUT_ENCODING')) {
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');
}
当然还有其它相关的一些知识
define('MAGPIE_FETCH_TIME_OUT', 60 * 180);//超时设置
利用MagPieRSS做了一个查看任意QQ签名的完意儿,输入任意QQ号后点提交即可以显示该QQ的个性签名。
也可以叫它个QQ偷窥器吧:[url=http://www.rocsky.com/tools/QQ/]http://www.rocsky.com/tools/QQ/[/url]
一段PHP加密与解密的代码
作者:大鹏 发布于:2007-10-23 21:57 Tuesday
分类:PHP&MySql
标签: 算法 php
用 Smarty 分离 PHP 应用程序中的形式与功能
作者:大鹏 发布于:2007-10-19 10:12 Friday
分类:PHP&MySql
标签: php smarty
PHP Web 应用程序易于上手。PHP 语言的语法整洁且易于掌握。可以将 PHP 与 HTML、JavaScript 和 CSS 直接混用以快速生成可视结果。而且,把 PHP 应用程序部署到您自己的 Web 服务器或托管服务中只是小菜一碟。
但是混用 PHP 与其他页面标记也是一项责任。PHP 代码通常是含有程序逻辑、结构化查询语言(Structured Query Language,SQL)查询、函数、类、开发人员注释、HTML、CSS 样式和脚本的复杂 web(不是开玩笑)。更糟糕的是,把内容从 PHP、echo 发送到输出缓冲区有很多种方法。维护这样混乱的页面十分费力。对代码或标记做出无关紧要的更改会带来严重破坏,并且增强页面可能需要设计人员与程序员的共同努力。使用 PHP,形式(页面的布局)及功能(页面的目的和构造)将被混在一起。
php动态生成的显IP个性签名
作者:大鹏 发布于:2007-8-24 16:10 Friday
分类:PHP&MySql
标签: php
今天用PHP生成了一个可以动态显示IP的个性签名图片,呵呵!
PHP在网站规划中常见的解决方案
作者:大鹏 发布于:2007-8-24 10:58 Friday
分类:PHP&MySql
标签: 收藏 php 数据库 smarty 框架
1.模版
PHP中的模版方案有很多种,我通常用[url=http://templatelite.sourceforge.net/]template_lite[/url],因为Lite的东西可以在不破坏原有思想的同时有保证运行效率。
2.配置文件
[url=http://www.yaml.org/]YAML[/url],一个比XML更省空间的数据结构语言;[url=http://spyc.sourceforge.net/]Spyc[/url]是一个对YAML操作的基本类库,它也够简单的说。
3.多语言
使用PHP的Curl库模拟访问
作者:大鹏 发布于:2007-8-23 11:18 Thursday
分类:PHP&MySql
标签: php
curl_setopt()函数将为一个CURL会话设置选项。option参数是你想要的设置,value是这个选项给定的值。
下列选项的值将被作为长整形使用(在option参数中指定):
*CURLOPT_INFILESIZE: 当你上传一个文件到远程站点,这个选项告诉PHP你上传文件的大小。
*CURLOPT_VERBOSE: 如果你想CURL报告每一件意外的事情,设置这个选项为一个非零值。
*CURLOPT_HEADER: 如果你想把一个头包含在输出中,设置这个选项为一个非零值。
*CURLOPT_NOPROGRESS: 如果你不会PHP为CURL传输显示一个进程条,设置这个选项为一个非零值。
ThinkTemplate模板引擎的设计和使用
作者:大鹏 发布于:2007-8-22 10:48 Wednesday
分类:PHP&MySql
标签: smarty 框架
在PHP开发的过程中,我们会接触到很多的模板引擎,包括FastTemplate、SmartTemplate、Smarty、tinybutstrong等,通常都是为了满足MVC开发模式的表现层需要,让显示和逻辑可以更好的分离(当然,现在的模板引擎越做越强大,甚至开始介入M)。有了模板引擎,开发者可以专注于程序代码,设计者可以专注于页面的布局和视觉效果,不必再担心要在模板中嵌入各种程序代码。本篇介绍了ThinkPHP内置的一款模板引擎的设计原理和使用方法,以及和其它主流模板引擎的一些区别。
一、ThinkTemplate介绍
ThinkTemplate是一个使用了XML标签库技术的编译型模板引擎,支持两种类型的模板标签,使用了动态编译和缓存技术,而且支持自定义标签库。ThinkTemplate作为ThinkPHP框架的一个模板引擎插件提供,也可以独立使用,因为ThinkPHP本身的设计是可以灵活替换模板引擎的。
ThinkTemplate模板引擎的运作过程如图所示:
ThinkPHP框架(PHP)
渲染模板缓存文件输出
读取模板文件
smarty中的Flash去"单击以激活并使用此控件"插件
作者:大鹏 发布于:2007-8-21 10:56 Tuesday
分类:PHP&MySql
标签: javascript php smarty
This plugin activates activeX Controls in IE (Eolas patched and upcoming versions) and removes "click to activate..." prompt when user tries to interact with the controls and create a cross-browser Flash object.
author: G-Lex
the code:
PHP面向对象编程
作者:大鹏 发布于:2007-8-14 9:21 Tuesday
分类:PHP&MySql
标签: php
PHP的面向对象编程是进行项目开发时常用到的方法。本节我们将要介绍如何在PHP中进行面向对象编程(OOP,Object Oriented Programming),并说明如何通过使用一些OOP的概念和PHP的技巧来减少编码和提高质量。在应用PHP类前,请你查阅相关的面向对象编程书籍,了解面向对象及类的相关基础知识。
如何建立一个类及类的实例对象?
在PHP中通过类来完成封装,我们先看一个简单的例子:
浅谈smarty的foreach循环控制
作者:大鹏 发布于:2007-8-12 9:50 Sunday
分类:PHP&MySql
标签: php smarty 框架
1 item="variable_name"中的variable_name是变量的名字,因此不需要在variable_name前面使用$符号。比如{foreach item="article " from=$articles}{/foreach} 这个循环中,article是每次循环得到的变量名字,在循环体中可以通过$article来使用这个变量。
2 还是上面这个例子,item="article"部分,要注意到article需要用双引号括起来,这样比较符合W3C的xhtml规范。
3 最为重要的,是要透彻理解from后面声明的变量,在上面的例子中就是$articles,是一个任意类型的集合对象。这个问题下面重点 说以下。
提取网页中所有的超链接地址的正则表达式
作者:大鹏 发布于:2007-7-26 16:58 Thursday
分类:PHP&MySql
标签: php 正则表达式
[b][color=#FF0000]/<a\s+href=["|\']?([^>"\' ]+)["|\']?\s*[^>]*>([^>]+)<\/a>/i[/color][/b]
[codes=php]
<?php
$file = file_get_contents("http://www.rocsky.com/");
preg_match_all('/<a\s+href=["|\']?([^>"\' ]+)["|\']?\s*[^>]*>([^>]+)<\/a>/i', $file, $links);
print_r($links);
exit;
?>
[/codes]