种瓜得瓜,种豆得豆;一份耕耘,一份收获

解决xml乱码问题

将xml定义中的不合法字符替换即可.
$txt = preg_replace(“/[^(\x20-\xD7FF)|(\xE000-\xFFFD)|(\x10000\-\x10FFFF)|\x9|\xA|\xD]/”,””,$txt);

admin @ 七月 13, 2010 at 4:23 上午

mac 10.6.4的alc888和hd4850驱动

本人机器是dell 530s.显卡是4850,id是 0×94421002的声卡是alc888,id是0×10ec0888
ALC888 驱动
x64_audio_for_ALC888
4850显卡
4800

admin @ 七月 9, 2010 at 18:09 下午

vsftpd 530 login error

/etc/shells权限为644,对于/etc/ftpusers同样限制权限为644,设置为 777 就会导致 ftp失败

admin @ 七月 8, 2010 at 22:41 下午

PHP多进程 win不可用

#! /usr/bin/php
<?php
$array = array(5,6,7,8,9,11,12,13,14,15);
foreach($array as $rpid){
        $pid[$i] = pcntl_fork();//这个值在父进程中大于0,在子进程中为0,返回-1代表fork失败
        if($pid[$i])
        {
                #pcntl_wait($status);  
                $id = getmypid();
                echo “parent process,pid {$id}, child pid {$pid[$i]}\n”;
        }
        else
        {
                echo ’start parse ‘.$rpid.”\n”;
                include(“test3.php”);
                //sleep(1);
                echo ‘end parse ‘.$rpid.”\n”;
                exit();//由于是复制了一份父进程的代码.所以需要使用pid值来判断将哪些代码在子进程中运行,记得这个exit,否则可能永远fork下去.
        }
}
?>

admin @ 六月 30, 2010 at 14:33 下午

php 编译oci的时候出现LD_LIBRARY_PATH错误

错误信息:
please check that LD_LIBRARY_PATH includes the directory with Oracle Instant Client libraries
解决办法:如果配置过程没有问题,LD_LIBRARY_PATH在/etc/profile中也有正确的路径则检查SELINUX是否开启,如果开启,则操作:SELINUX=disabled,重启
即可解决问题
如不想重启,想立即看到结果则运行setenforce 0

admin @ 六月 11, 2010 at 15:44 下午

PHP使用CURL上传文件的函数

一般的文件上传是通过html表单进行的,通过CURL可以不经过浏览器,直接在服务器端模拟进行表单提交,完成POST数据、文件上传等功能。需要被上传的文件需要在文件名前加上“@”以示区分,并且,文件名需要是完整路径。
以下php函数来模拟html表单的提交数据:
function uploadByCURL($post_data,$post_url){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $post_url);
curl_setopt($curl, CURLOPT_POST, 1 );
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl,CURLOPT_USERAGENT,”Mozilla/4.0″);
$result = curl_exec($curl);
$error = curl_error($curl);
return $error ? $error : $result;
}
函数的使用:
$url = “http://127.0.0.1/app.php”;
$data = array(
“username” => $username,
“password” => $password,
“file1″ => “@”.realpath(“photo1.jpg”),
“file2″ => “@”.realpath(“file2.xml”)
);
print_r(uploadByCURL($data,$url));
http://flashphp.org/blog/

admin @ 六月 6, 2010 at 17:13 下午

MySQL索引分析和优化(转)

MySQL索引分析和优化(转)
索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记 录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如 果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录,通过索引查找 记录至少要比顺序扫描记录快100倍,个人感觉快100倍有点夸张。
假设我们创建了一 个名为people的表
CREATE TABLE people (
peopleid SMALLINT NOT NULL,
name CHAR(50) NOT NULL
);
创建完后,我 们随机把1000个不同name值插入到people表。
可以看到,在数据文件中name列没有任何明确的次序。如果我们创建了name列的索 引,MySQL将在索引中排序name列。
对于索引中的每一 项,MySQL在内部为它保存一个数据文件中实际记录所在位置的“指针”。因此,如果我们要查找name等于“Mike”记录的 peopleid(SQL命令为“SELECT peopleid FROM people WHERE name=’Mike’;”),MySQL能够在name的索引中查找“Mike”值,然后直接转到 数据文件中相应的行,准确地返回该行的 peopleid(999)。在这个过程中,MySQL只需处理一个行就可以返回结果。如果没有“name”列的索引, MySQL要扫描数据文件中的所 有记录,即1000个记录!显然,需要MySQL处理的记录数量越少,则它完成任务的速度就越快。

索引的类型
普通索引
这是最基本的索引类型,而且它没 有唯一性之类的限制。普通索引可以通过以下几种方式创建

创建索引,例如CREATE INDEX <索引的名字>; ON tablename (列的列表);
修改表,例如ALTER TABLE tablename ADD INDEX [索引的名字] (列的列表);
创建表的时候指定索引,例如CREATE TABLE tablename ( [...], INDEX [索引的名字] (列的列表) );
唯一性索引
这 [...]

admin @ 六月 4, 2010 at 17:26 下午

正则表达式收集

字符描述: \:将下一个字符标记为特殊字符或字面值。例如”n”与字符”n”匹配。”\n”与换行符匹配。序列”\\”与”\”匹配,”\(“与”(“匹配。
^ :匹配输入的开始位置。
$ :匹配输入的结尾。
* :匹配前一个字符零次或几次。例如,”zo*”可以匹配”z”、”zoo”。
+ :匹配前一个字符一次或多次。例如,”zo+”可以匹配”zoo”,但不匹配”z”。
? :匹配前一个字符零次或一次。例如,”a?ve?”可以匹配”never”中的”ve”。
.: 匹配换行符以外的任何字符。
(pattern) 与模式匹配并记住匹配。匹配的子字符串可以从作为结果的 Matches 集合中使用 Item [0]…[n]取得。如果要匹配括号字符(和 ),可使用”\(” 或 “\)”。
x|y:匹配 x 或 y。例如 “z|food” 可匹配 “z” 或 “food”。”(z|f)ood” 匹配 “zoo” 或 “food”。
{n}:n 为非负的整数。匹配恰好n次。例如,”o{2}” 不能与 “Bob 中的 “o” 匹配,但是可以与”foooood”中的前两个o匹配。
{n,} :n 为非负的整数。匹配至少n次。例如,”o{2,}”不匹配”Bob”中的”o”,但是匹配”foooood”中所有的o。”o{1,}”等价 于”o+”。”o{0,}”等价于”o*”。
{n,m} :m 和 n 为非负的整数。匹配至少 n 次,至多 m 次。例如,”o{1,3}” [...]

admin @ 六月 4, 2010 at 17:24 下午