Zen Space
php erlang javascript ruby python web linux mac os x
rss
email
twitter
facebook
  • Labs
  • Resume
  • Works
  • About

Author Archive

基于var_export 和 include返回值的缓存方案

no comments
Posted on 七 2 2009 by admin

前一篇文章我们研究了include调用返回值的问题,并指出可以通过这种方式来完成序列化相同的功能,现在我就来研究一下这种方法的可行性和效率,因为直接的返回php值肯定是比unserialize()函数要快。
第一步我们来研究下怎么将php对象持久化的保存起来。下面是我定义的一些变量:
123456private $_var;
public $pub = array(’pub value’, 3, 4);
public function __constructor($var)
{
$this->_var = $var;
}
12345678910public function show()
{
echo $this->_var;
}
}

$string = "It’s a string…";
$array = array(1, 2, ‘key’ => ‘value’, array(’sub-array’));
$number = 135345.55;
$class = new MyClass(’class var’);
123456//通过serialize()方法我们可以将他们持久化比如:
echo serialize($string); //s:16:"It’s a string…";
echo serialize($array); //a:4:{i:0;i:1;i:1;i:2;s:3:"key";s:5:"value";i:2;a:1:{i:0;s:9:"sub-array";}}
echo serialize($number); //d:135345.5499999999883584678173065185546875;
echo serialize($class); //O:7:"MyClass":2:{s:13:"MyClass_var";N;s:3:"pub";a:3:{i:0;s:9:"pub value";i:1;i:3;i:2;i:4;}}
// 我们可以将这些序列化的结果存到文件中,在需要的时候unserialize()返回得到相应的值,但是现在我不会这么做。
前篇文章提到了通过include返回值来直接取得php值对象,首先我们要把值保存起来,因为我们要通过include来包含它,首先遇到的问题就是我们的序列化函数必须要生成合法的php表达式才行,否则include是无法得到相应的返回值的
比如我们要序列化 字符串 “abcd” 我们可以这么做
1234file_puts_content("data.php", "return ‘abcd’;");
//然后这样取得相应的值
$string = include "data.php";
echo $string; // 它应该输出 [...]


Read More

Category: PHP

gmail新功能之标签改进

1 comment
Posted on 七 2 2009 by admin

今天刚登陆gmail,又发现新的惊喜:

很久以前gmail就支持了给邮件加标签的功能,但是到后面基本没有用到,主要有两个原因: 加标签麻烦,以前标签的位置有点低,即使是拖到最上面还是很低,比较麻烦,二是因为以前给邮件加标签似乎只能通过菜单栏来加标签,现在可以直接通过拖放给邮件加标签,如下图:

现在标签的位置和收件箱紧靠着,同时可以把不常用的标签隐藏起来,标签可以重排序,gmail的beta是实实在在的beta,永远不满足,我喜欢:)


Read More

Category: G-related

PHP中include()函数(以及相关函数)的返回值及避免序列化开销的方法

no comments
Posted on 七 1 2009 by admin

以前乱翻symfony生成的缓存文件的时候看到很多类似:
1<?php return array(’key’ => "value"); ?>
这种表达式,当时并没有怎么在意,今天研究symfony代码的时候看到这样一句代码
1<?php  $this->classes = include($file); ?>;
一直都是通过include require来包含文件,但是从来没有使用过他的返回值,印象中include返回的无非是true或者false吧。今天自己看了下文档,发现在php文件中是可以直接调用return的。比如:
12345678910// return.php
<?php
$value = array(’haha’, 1, 3);
return $value;
?>
// get_return.php
<?php
$value = include("return.php");</span></p>
echo $value; // 输出 Array, 因为$value 是从return.php返回的一个数组
?>
其实项目中很少情况需要这样的返回方法。如果想要从return.php中得到返回值一般是通过调用return.php中所调用的函数来得到。
在symfony中这种方式就很合理,如果大家熟悉symfony的话,应该知道,symfony运行起来以后会在cache目录下生成系统配置文件的缓存 ,诚然可以通过序列化的方式来缓存这些信息,但是反序列化是需要消耗资源的。通过这种方式来做持久化也是个不错的选择.


Read More

Category: PHP

最近文章

  • 开启Mac OS X Snow Leopard的NTFS原生读写
  • 在2009的尾巴上
  • 支持IPv6的Tunnelblick For Mac OS X OpenVPN客户端
  • Lockerz邀请
  • 在PHP中检查PHP文件是否有语法错误

分类目录

  • G-related (1)
  • Hackintosh (1)
  • JavaScript (1)
  • Mac (4)
  • PHP (5)
  • 乱78糟 (1)
  • 未分类 (4)

标签~云

2009 debug editor exception html JavaScript Mac MacFUSE MacOSX NTFS OS X PHP Snow Leopard softwares ssh syntax check Tools VPN

一些脚印

  • reeze 在 Mac OS 启动sshd服务 上的评论
  • birdbluebloc 在 Mac OS 启动sshd服务 上的评论
  • kevin 在 Lockerz邀请 上的评论
  • reeze 在 Lockerz邀请 上的评论
  • kevin 在 Lockerz邀请 上的评论

Google Reader

  • quickersort (Niniane's Blog)
  • Economics in One Picture (Greg Mankiw's Blog)
  • 谷歌重申不过滤搜索结果 做好停止中国业务准备 (焦点新闻-新浪科技)
  • Xen 初学者指南 | LinuxSir.Org (www.linuxsir.org)
  • 45个吸引人的创新简历 (玩聚SR|最佳)
Shared Items

日志存档

  • 2010年一月 (1)
  • 2009年十二月 (3)
  • 2009年十月 (2)
  • 2009年七月 (4)
  • 2009年六月 (4)

链接表

  • Ideawu
  • LinuxToy
  • on Github
  • Tina的设计天地
  • 风雪之隅
想读
Programming Collective Intelligence
Collective Intelligence in Action
旅行的艺术
操作系统设计与实现(第三版)(上册)
操作系统概念(第六版 影印版)
正读
晨间日记的奇迹
Even Faster Web Sites
构建高性能Web站点
晨間日記的奇蹟
深入理解LINUX内核(影印版第3版)
读过
应用Rails进行敏捷Web开发
追风筝的人
构建可扩展的Web站点
Restful Web Services
PHP 5权威编程

  • Resume
  • Works
  • About
Powered by Wordpress  |  Designed by WebTreats