2008-09-05 14:57:56 by 番茄红了技术相关
在看这篇文章之间你需要将以下代码存为 *.reg 文件导入你的注册表,不过要记得将 D:\\php5\\ 修改为你的 PHP 路径
这样通过在PHP文件上点击右键,你的 PHP 程序就能以 CLI [Command Line Interface] 模式运行了
你可以参看这里获得一些帮助:http://www.tblog.com.cn/manual/php/features.commandline.html
复制内容到剪贴板
[HKEY_CLASSES_ROOT\*\shell\使用PHP运行(&R)]
@=”使用PHP运行(&R)”
[HKEY_CLASSES_ROOT\*\shell\使用PHP运行(&R)\command]
@=”cmd /K D:\\php5\\php.exe \”%1\”"
如果你不想添加注册表项目,你也可以在 cmd / shell 下输入以下命令来运行:
复制内容到剪贴板
$ php textcmd.php
在附件里你可以看到这段程序的代码,相信如果你会 PHP 的话,你已经能够根据这个程序扩展他来玩玩了
核心部分:
我们是通过 fgets(STDIN) 来获取到键盘输入的,至于为什么以及更多更详细的东西,大家就看上面给出的手册地址应该就能明白了
(未完,点击阅读全文)
2008-08-01 10:52:26 by 番茄红了技术相关
为了更容易在PHP与JS中有效的传递字符,使用这样的一个函数对字符串做个序列化就OK了,输出类似于json_encode() 的字符串。
拿这个再改造一下,也可以得到我们自己所需要的 json_encode() 了
FROM:http://www.php.net/manual/zh/function.json-encode.php#74878
function json_encode_string($in_str) {
mb_internal_encoding("UTF-8");
$convmap = array(0x80, 0xFFFF, 0, 0xFFFF);
$str = "";
for ($i = mb_strlen($in_str)-1; $i>=0; $i--) {
$mb_char = mb_substr($in_str, $i, 1);
if (mb_ereg("&#(\\d+);", mb_encode_numericentity($mb_char, $convmap, "UTF-8"), $match)) {
$str = sprintf("\\u%04x", $match[1]) . $str;
} else {
$str = $mb_char . $str;
}
}
return $str;
}
2008-07-31 12:09:04 by 番茄红了技术相关
可恶的Donews的RSS编码居然是utf-8的,导致在使用Zend_Feed导入时会出错,添加了一段代码进行处理,保证在任何编码下都可以正常导入RSS
<?php
require_once("Zend/Loader.php");
Zend_Loader::registerAutoload();
$feedString = file_get_contents('http://home.donews.com/rss.xml');
preg_match('/encoding\=\"([\w\-]+)\"/i', $feedString, $matches);
$encoding = strtolower($matches[1]);
if ($encoding != 'utf-8') {
$feedString = mb_convert_encoding($feedString, 'utf-8', $encoding);
$feedString = preg_replace('/encoding\=\"([\w\-]+)\"/i', 'encoding="utf-8"', $feedString);
}
Zend_Feed::importString($feedString);
2008-01-14 13:55:24 by 番茄红了技术相关
在经典论坛上发过一次,个人的项目中在后台处理时用到这个东西,对于简单的表单验证还是挺方便的。
因为不想让代码变得太臃肿,所以有很多不常用的功能就没有再添加了
对于我佛山人的意见就没有做修改了,为什么?因为我懒呗,哈哈
今天看到omeweb也修改了一个版本,做了许多修改,改得挺不错的,谢谢了。
源码在这里: (未完,点击阅读全文)
2008-01-12 20:10:10 by 番茄红了技术相关
qhwa说需要使用Discuz的模板引擎,于是周未抽了点时间帮忙做了个封装,测试了一下,速度还不错。顺便也拿来用到自己的程序中使用,欢迎大家下载并提出意见
主要功能说明
- 去掉了 Discuz 语言包的功能
- 移植 Discuz 模板中所有的功能
- 添加了自动更新缓存及生命周期功能
在模板中的使用方法跟Discuz的一样,所以就不做多余的说明了,使用前只需要做些简单的设置就可以了
如果需要使用discuz的语言包功能,只要去掉template.class.php第172行注释,并在template.func.php中加上discuz原来的languagevar函数就可以了
点击下载源文件
以下是代码范例: (未完,点击阅读全文)
2008-01-04 22:08:37 by 番茄红了技术相关
不错的一篇文章,转过来收藏一下,方便以后查看。
原文地址:http://www.surfchen.org/?p=277
原理
QueryCache(下面简称QC)是根据SQL语句来cache的。一个SQL查询如果以select开头,那么MySQL服务器将尝试对其使用QC。每个cache都是以SQL文本作为key来存的。在应用QC之前,SQL文本不会被作任何处理。也就是说,两个SQL语句,只要相差哪怕是一个字符(例如大小写不一样;多一个空格等),那么这两个SQL将使用不同的一个cache。不过SQL文本有可能会被客户端做一些处理。例如在官方的命令行客户端里,在发送SQL给服务器之前,会做如下处理:
- 过滤所有注释
- 去掉SQL文本前后的空格,TAB等字符。注意,是文本前面和后面的。中间的不会被去掉。
下面的三条SQL里,因为SELECT大小写的关系,最后一条和其他两条在QC里肯定是用的不一样的存储位置。而第一条和第二条,区别在于后者有个 注释,在不同客户端,会有不一样的结果。所以,保险起见,请尽量不要使用动态的注释。在PHP的mysql扩展里,SQL的注释是不会被去掉的。也就是三 条SQL会被存储在三个不同的缓存里,虽然它们的结果都是一样的。
select * FROM people where name='surfchen';
select * FROM people where /*hey~*/name='surfchen';
SELECT * FROM people where name='surfchen';
目前只有select语句会被cache,其他类似show,use的语句则不会被cache。
因为QC是如此前端,如此简单的一个缓存系统,所以如果一个表被更新,那么和这个表相关的SQL的所有QC都会被失效。假设一个联合查询里涉及到了表A和表B,如果表A或者表B的其中一个被更新(update或者delete),这个查询的QC将会失效。
也就是说,如果一个表被频繁更新,那么就要考虑清楚究竟是否应该对相关的一些SQL进行QC了。一个被频繁更新的表如果被应用了QC,可能会加重数据库的负担,而不是减轻负担。我一般的做法是默认打开QC,而对一些涉及频繁更新的表的SQL语句加上SQL_NO_cache关键词来对其禁用cache。这样可以尽可能避免不必要的内存操作,尽可能保持内存的连续性。
那些查询很分散的SQL语句,也不应该使用QC。例如用来查询用户和密码的语句——“select pass from user where name=’surfchen’”。这样的语句,在一个系统里,很有可能只在一个用户登陆的时候被使用。每个用户的登陆所用到的查询,都是不一样的SQL 文本,QC在这里就几乎不起作用了,因为缓存的数据几乎是不会被用到的,它们只会在内存里占地方。 (未完,点击阅读全文)