坚信科学,分享技术

2018全新版本,未来在blog.54chen.com更新博客!

>>>尝试更加利于阅读的2014版科学院,以后都在新版上写。

Category Archives: php

php与c通信,php与java通信,这些是任何一个php教程里都看不到的东西.

[原创]mediawiki安装改进手记-使用mediawikit和postgresql搭建有强大搜索功能的wiki

[ 文章作者:陈臻 本文版本:v1.1 最后修改:2009.7.28 转载请注明原文链接:http://www.54chen.com/c/640 ] 在yahoo工程技术部,最有趣的事情当属打开工程技术部的wiki,慢慢阅读来自前辈们的大作。 yahoo以前使用的是twiki,后来更换了mediawiki,扩展了postgresql的搜索,使mediawiki的搜索功能得到了加强,这里,记录下我在校内搭建一整套的手记: 第一步.准备php和postgresql环境 大环境:因为是内部系统,所以图省事,WEB使用的是一个ubuntu的机器,安装这些丝毫不用费力了。就是先用apt安装php、nginx,源码包安装lighttpd取spawn-cgi一枚备用。源码包安装postgresql8.3.3。 #apt-get install php5 php5-pgsql php5-mbstring php5-cgi #apt-get install nginx #wget http://www.lighttpd.net/download/lighttpd-1.4.19.tar.gz #tar -xvf lighttpd-1.4.19.tar.gz #cd lighttpd-1.4.19/ #./configure #make #cp src/spawn-fcgi /usr/local/bin/spawn-fcgi (这里图快,没使用php-fpm) #adduser www #spawn-fcgi -a 127.0.0.1 -p 9000 -C …

Continue reading

Posted in linux, php | Tagged , , | 7 Comments

[原创]Discuz! BBS缓存整体方案

[ 文章作者:陈臻 本文版本:v1.0 最后修改:2009.6.22 转载请注明原文链接:http://www.54chen.com/c/611 ] DZ的缓存方案是经典之作,不论是系统的主动缓存还是帖子内容的被动缓存。在我前面的博文【[原创]Discuz! BBS的主动缓存和被动缓存】里所讲述的是DZ的缓存常用的一种方法,下面再说在DZ系统里如何决定一个内容是不是要缓存。 所有的数据全都缓存,不失为一个好办法。但是,在数据更新要求及时的环境下,例如帖子回复的内容要求立即显示等地,又不得不对其缓存进行更新。所以,基本上每一个成熟的系统,都不会去把所有的东西缓存起来。这时是不是让各位很困惑,缓存就是一把双刃剑,用好了系统效率事半功倍,用得不好,产品功能将受到严重影响。DZ就是一个缓存与不缓存选取得当的系统。 我们一起进入DZ的viewthread.php,也就是负责显示帖子内容的一个文件。代码一开始有这样一个判断: $page = max($page, 1); if($cachethreadlife && $forum['threadcaches'] && !$discuz_uid && $page == 1 && !$forum['special']) {        viewthread_loadcache(); } 这是什么意思呢?基本上就是在说,当一些系统的设置都满足的时候,只要是第一页就去执行viewthread_loadcache(),各位已经等不及看这个函数的意思了吧,且慢,先说说为什么选中了第一页

Continue reading

Posted in php, 架构研究 | Tagged , , | 5 Comments

[原创]Discuz! BBS的主动缓存和被动缓存

[文章作者:陈臻 本文版本:v1.1 最后修改:2009.3.16 转载请注明原文链接:http://www.54chen.com/c/505] DZ的缓存同样分了主动缓存和被动缓存。从功能上来说,主动缓存一般用到管理员对全站的设置,等等需要手动更新的地方,这些地方的数据都有一个特点,那就是它们的更新可能性很小,平时不需要自动更新;DZ的被动缓存,一般分布在诸如帖子内容显示,用户信息更新这些地方,这些地方的更新基本上都是因为用户使用了某一特定的功能时所激发的。 在正常运行的DZ系统文件夹里面会有一个forumdata文件夹,这个是论坛记录和缓存文件的存放目录,一般这些文件都是自动生成的,在forumdata/cache/里面存储的都是一些DZ的基本设置和一些常使用的值,这些值一般在系统初始化的时候就保存在$_DCACHE全局变量中,在后面的操作中将可以简单地使用它们进行功能上的判断。 (1)主动缓存,也就是只在用户操作后台时,由DZ系统去删除原有缓存进行更新的缓存。它们普遍存在于forumdata/cache/目录中,比如说/forumdata/cache/cache_settings.php保存了整个系统的核心设置,一般情况是不会更新的,只有后台修改了比如站点名称等关键信息的时候才会去主动更新这个缓存文件。还有用于保存用户组和管理员组相关信息的两类缓存文件: /forumdata/cache/usergroup_'.intval($groupid).'.php /forumdata/cache/admingroup_'.intval($adminid).'.php 另外还有

Continue reading

Posted in php, 架构研究 | Tagged , , | 6 Comments

[原创][收集]各种语言版本的变量值作变量名的方法

[文章作者:陈臻 本文版本:v1.1 最后修改:2009.3.11 转载请注明原文链接:http://www.54chen.com/c/498] 在写代码的过程中,不可避免经常遇到的一个问题是,如何将上下文中的变量值当变量名。本文将收集各种语言下的情况,以供参考。 PHP 这是最最简单的一种: <?php $fruit = "apple"; $var = "fruit"; echo $$var; ?> 将得到结果 apple JAVA JavaScript <script type="text/javascript"> var str = "hello world!"; var str2 = "str"; alert(eval(str2)); </script> 将得到结果:hello world AS2 AS3 Perl C …

Continue reading

Posted in WEB相关, java, linux, php | Tagged , | 2 Comments

如何用php代码清空squid缓存下的指定文件

[文章作者:陈臻 本文版本:v1.0 最后修改:2009.3.5 转载请注明原文链接:http://www.54chen.com/c/490]     PURGE 是一个特殊的HTTP请求方法。它是Squid 的专有方法,没有在任何RFC 里定义。它让管理员能强制删除缓存对象。既然该方法有些危险,squid 默认拒绝PURGE 请求,除非你定义了ACL 引用了该方法。否则,任何能访问cache 者也许能够删除任意缓存对象。我推荐仅仅允许来自localhost 的PURGE: acl Purge method PURGE acl Localhost src 127.0.0.1 http_access allow Purge Localhost http_access deny Purge  (squid.conf摘要) 以下是使用purge删除指定文件的两个函数:     //发送socket数据 function socket_service($ip, $port='80', $out="") {  if(trim($ip)=="")return "Error: …

Continue reading

Posted in php | Tagged , | 5 Comments

php正则表达式常见 regex 操作符清单

php的正则表达式反馈了php的功力,下面是操作符的清单,常备重要哦。。。 操作符 用途 .(句点) 匹配所有单个字符 ^(脱字符号) 匹配出现在行或字符串开头的空字符串 $(美元符号) 匹配出现在行尾的空字符串 A 匹配大写字母 A a 匹配小写字母 a \d 匹配所有一位数字 \D 匹配所有单个非数字字符 \w 匹配所有单个字母或数字字符;同义词是 [:alnum:] [A-E] 匹配所有大写的 A、B、C、D 或 E [^A-E] 匹配除大写 A、B、C、D 或 E 之外的任何字符 X? 匹配出现零次或一次的大写字母 X X* 匹配零个或多个大写字母 X X+ …

Continue reading

Posted in php | Tagged , | 5 Comments

MySQL的性能调优工具:比mysqlreport更方便的tuning-primer.sh

Sundry MySQL提供的脚本相比mysqlreport更进一步:除了报表还进一步提供了修改建议。安装和使用非常简单: wget http://www.day32.com/MySQL/tuning-primer.sh chmod +x tuning-primer.sh ./tuning-primer.sh 和mysqlreport一样,tuning-primer.sh也支持.my.cnf [client] user = USERNAME password = PASSWORD socket = /tmp/mysql.sock   样例输出:在终端上按照问题重要程度分别用黄色/红色字符标记问题 -- MYSQL PERFORMANCE TUNING PRIMER -- - By: Matthew Montgomery -   MySQL Version 5.0.45 i686 Uptime = 19 days …

Continue reading

Posted in linux, php | Tagged , | 4 Comments

淫荡一下,你就知道

这是一个很YY的应用,说他YY他就YY,说他XX他就XX. 你可以diy自己的搜索引擎,设置为主页,真正属于你自己的搜索主页。 下图是示例: 订制你自己的搜索主页,现在就开始吧!

Continue reading

Posted in php | Tagged , , | 2 Comments

究竟什么是TSRMLS_CC?

翻译:54chen.com 原文地址:http://blog.libssh2.org/index.php?/archives/22-What-the-heck-is-TSRMLS_CC-anyway.html 如果你曾经做过php内核或者是php扩展方面的工作,你一定见到过这个到处都是的结构,但是却从来没有人提起过它。知道这是什么的人典型回答不知道的人都会这样说:“不用管它是什么,只需要在这里、这里还有这里用,如果编译器说少一个tsrm_ls,就加一个...”。这样回答并非都是因为这个人懒惰(的确是有一点点懒),其实那只是在说引擎甚至可以不管这个神奇的值在简化什么,这是因为一个新入门的扩展开发者知道它的结构没有什么益处。这信息就像奶牛的意见一样,没关系,就是牛叫而已。 既然我喜欢听自己喋喋不休的无意义主题(这个月我已经少写很多博客了),我想我得弥补这一主题,看看会不会有人通过他能领会什么。你可以责怪Lukas(Lukas Smith 是 PEAR DB 的主要作者应该是这个Lukas,译者注),他让我一直在planet-php.net上。 术语 TSRM Thread Safe Resource Manager - 这是一个经常被忽视的层面,就会有也是很少被讨论到,在你的PHP源代码包中,它被隐藏在/TSRM目录中。默认情况下,TSRM 层只在编译需要它的SAPI的时候才会打开(例如apache2-worker)。所有的在win32下编译的SAPI都会有TSRM层而不会管它们是否需要。 ZTS Zend Thread Ssafety -通常情况下,与TSRM有相同的用处。具体

Continue reading

Posted in php, 资料文档 | Tagged , , , | 10 Comments

sscanf函数的各种用法

sscanf是一个运行时函数,原形很简单:  int sscanf(  const char *buffer,  const char *format [,  argument ] ...  );  它强大的功能体现在对format的支持上。  sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者以固定字符串为输入源。      char str[512] = ;    sscanf("123456 ", "%s", str);    printf("str=%s", str); 输出 str=123456     sscanf("123456 ", "%4s", str);    printf("str=%s", str); 输出 str = 1234   sscanf("123456 abcdedf", "%[^ ]", str);    printf("str=%s", str); 输出 str=123456 (遇到空格为止)   sscanf("123456abcdedfBCDEF", "%[^A-Z]", str);    printf("str=%s", str); 输出 str=123456abcdef (遇到指定字符为止) …

Continue reading

Posted in linux, php | Tagged , , , | Leave a comment
Page 3 of 41234