2009/04/20

Linux下PHP保持进程唯一运行


<?php

//确认进程唯一,防止死掉
function check_proc() {
    if( $pidfile = @file_get_contents("./my.pid") )
    {
        list($pid, $last_time) = explode(",", $pidfile);       
        if( $link = @readlink("/proc/{$pid}/exe") )
        {
            if( time()-$last_time > 60*60 )//1 hour
            {
                //超时KILL掉那个进程
                system("kill -9 {$pid}");
            }else{
                echo "already exist, process exit.\n";
                exit;
            }
        }
    }
    //写入当前PID信息
    file_put_contents("./my.pid", getmypid().','.time() );
}

?>


getmypid()获取进程的ID。

在PHP程序起始处运行此函数,即可确保进程唯一,且可以踢掉超时的进程。

也可以使用shell_exec("ps aux|grep ".$pid)来判断进程是否存在。对Linux越熟悉就越多方法。

2009/03/31

php一行搞定过滤字符


<?php
iconv('GBK', 'GBK//IGNORE', $file);//过滤掉错误字符,防止解析错误
?>


解决问题:如果你的文件中含有错误字符,在执行解析xml等操作时有时会引发解析错误。在解析xml文档时若头部编码为gb2312,尽量替换为gbk。

方法:iconv,将进出编码均设置为同一编码即可,加上'//IGNORE'即可。

优点:省去自己解析字串剔除错误编码,非常方便。

应用场景:

1.使用simplexml_load_file(),simplexml_load_string(),出现错误Premature end of data in tag...。改用file_get_contents(),然后iconv(),再simplexml_load_string()即可。

2.Warning: SimpleXMLElement::__construct() [function.SimpleXMLElement---construct]:
input conversion failed due to input error, bytes 0xC2 0x2E 0x20 0x20 in。。。

2009/03/23

黑莓所有按键失效

昨天我的黑莓所有按键全部失效了,原因是因为轨迹球下方的触点移位了,导致触点一直处于按下状态,所以其它按键通通无效了。

送修也是很郁闷,中关村鼎好地下一层,虽然卖家人品还好,免费给维修了。但修理的结果确实郁闷,拧裂了机壳,太暴力了,电池后盖合上还总有缝,键盘有两个键也大不如以前好使了。泪奔。。。我的882啊

以为很大的问题呢,如果知道只是这么一点小问题,我就自己在家修了。

学到一点小技巧,处理手机内屏的灰尘时,用胶带粘去即可,注意胶的粘性不可太强,否则会适得其反会把胶留在内屏里头。以前我拆了手机总是处理不掉里面的灰尘。手机在保质期内还是送修吧,别自己把问题搞大了,还无法保修。

EACCELERATOR导致Apache宕机

最近服务器总出现apache宕机,错误日志总出现类似的记录,EACCELERATOR: PHP crashed on opline...
例:
[2332] EACCELERATOR: PHP crashed on opline 73 of query() at /XXX/app/vendors/classes_common.php:294

解决办法:
1.eaccelerator.filter选项中过滤掉出错的文件。
我尝试了,但开启debug后,在日志里依然可以发现过滤文件的踪影,郁闷。

2.关掉eaccelerator。PHP5.2.6后的版本已经优化的很不错了,加上zend出的加速器,速度还可以。

配置:apache 2.2.4 + php 5.2.5 + windows server 2003



参考
[1]http://bbs.laxjyj.com/read-htm-tid-4678360.html

2009/03/21

动心是否值得?

佛云人有七苦,生、老、病、死、爱别离、怨憎会、求不得。

2009/03/18

闷

在友播找王菲的《闷》居然排在后面N多页,匪夷所思,友播算是我觉得还行的网站,品味比google music稍微好那么一些,但也好不到哪里去。一个字:真烂!

公司一堆不太熟的人,唱歌实在不是什么好打算,品味差异太大了,听靡靡之音实在烦得很,来点痛快的行不?

[PHP]PDO连接MS SQL SERVER/ORACLE二三事

无法查看这则摘要。请 点击此处查看博文。

2009/03/17

Notepad++运行python、php

F5弹出运行框

Python:
cmd /k C:\Python25\python.exe "$(FULL_CURRENT_PATH)" & ECHO. & PAUSE & EXIT


PHP:
cmd /k D:/server/php/5.2.5/php.exe "$(FULL_CURRENT_PATH)" & ECHO. & PAUSE & EXIT


可以保存上述命令为快捷方式,想修改快捷键,在 "设置->管理快捷键->Run Commands" 中修改。

$(FULL_CURRENT_PATH) 的含义是当前文件的完整路径,这是 Notepad++ 的宏定义,更多的相关宏可以参见官方FAQ:Run external tools。注意要用引号括起来,防止路径中间有空格。

更多CMD命令,运行cmd.exe,敲入help命令即可。

EXIT 退出 CMD.EXE 程序(命令解释程序)。
PAUSE 暂停批文件的处理并显示消息。
ECHO.(或ECHO\) 打印换行。

参考:http://arccos.blogspot.com/2009/03/notepad-python.html