易截截图软件、单文件、免安装、纯绿色、仅160KB

tokyo tyrant 在 php 上不能自动反序列化的问题

前一阵试用 tokyo tyrant 碰到一个麻烦,
在php上用memcache接口,取出数据的时候,不会自动反序列化。比如了一个 array(1,2,3,4,5),出来就是 'a:5:{i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:4;i:4;i:5;}' 了。

Wireshark 跟踪了一下,发现和标准memcached返回的数据里差一个字节。去看了下 memcached
协议,发现这个字节是个客户端的标记 flag 。存储的时候放置这个标志,取的时候照样返回。php 的 memcache
扩展应该就是用这个字节来标志是否是 php 的数据。如果匹配则反序列化。对比 tokyo tyrant
的源代码,发现它在存取的时候无视了这个标记位(其实还无视了一些其他东西,比如过期时间之类的,只用了 key 和 value
以及他们的长度),所以就有了这个结果。
之前考虑改 tokyo tyrant ,做了个补丁。不过正如 xdanger
所说,这个办法不好。之前测试得不仔细,后来试了几个不同的类型,果然是出了问题。于是又考虑再改 php
的客户端。让它不管什么类型存储的时候都去做序列号。似乎是解决了反序列号问题。这样修改版的客户端放的东西原版的能正常读取,但原版客户端一旦放了常规值就会出毛病。这一下同时改了客户端和服务端,另外,压缩的问题也还是没解决。看来这个问题还真的很难。
php 客户端补丁,修改 memcache.c
 http://syre.blogbus.com/files/12229540080.diff

 tokyo tyrant 补丁,修改 ttserver.c
http://syre.blogbus.com/files/12227686210.diff


相关文档:

PHP 一些知识

1.取得当前内存使用大小:memory_get_usage()
2.计算执行时间:microtime(true)
3.设置script执行时间限制set_time_limit
4.设置内存限制ini_set("memory_limit","256M");
3.从远程下载文件的两个方法:
$contents=file_get_contents("http://www.govtrack.us/data/us/gis/zip4dist-prefix.t ......

关于php的引用

文档是这么说的:
PHP 的引用允许用两个变量来指向同一个内容。意思是,当这样做时:
<?php
$a
=&
$b
;
?>

这意味着 $a
和 $b

指向了同一个变量。
注: $a
和 $b

在这里是完全相同的,这并不是 $a
指向了 $b

或者相反,而是 $a
和 $b
指向了同一个地方。
所以:
<?ph ......

《大道PHP》——开端

    昨天回家来,今天粗略看了一下《大道PHP》,书很细,C++的也是大概看了一下,总之,收获不大,也许第一天的缘故吧。
    必须排除干扰,死心蹋地的学习了,高效的完成寒假的任务,PHP和C++基本功,VC++,MFC,可能的话,分析一下Dizcuss也是不错的,养成良好的编程风格和习惯。下半年, ......

php 调用 sudo 不执行问题

代码
//第一种方式
exec($cmd,$str,$result);
echo "result = $result <br/>";
if ($result != 0) {
    echo "failed";
}
print_r($str);
#没有输出结果
//第二种方式
$output = shell_exec("/usr/bin/sudo /usr/bin/whoami 2>&1);
echo "output = ......

PHP + Apache + MySQL 安装配置

此文章的安装方法适用于Windows XP下的Apache+PHP+MySQL安装。 1. 安装环境
操作系统是 Windows XP 中文版, Apache, PHP, MySQL 的最新版本是截止到 2007.09.07,分别在其官网下载的:
* Apache 2.2.6:http://apache.mirror.phpchina.com/httpd/binaries/win32/
* PHP 5.2.4 (Windows Binaries PHP 5.2.4 z ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号