2012年8月25日星期六

php安装pcntl

一直以为是要象安装libevent库一样来安装pcntl,但是今天在虚拟机上php -m一看,pcntl已经安装了,估计是apt-get install php5-dev的时候就安装了。这下省事了。
其实pcntl是php的标准库,在php的源代码里面编译来安装的。而libevent是要在pecl的网站下源码编译安装的。

2012年8月24日星期五

PHP安装libevent扩展库

今天一直在看php如何使用epoll模型进行编程。因为之前是用select模型来写得服务器程序,虽然功能无碍,但是第一个版本总是不会让我满意,所以想趁着这段时间比较空闲,把服务器程序用epoll模型重新写一遍。在这之前首先要把libevent的库安装了。

  1. php的libevent扩展库依赖于原始的libevent库,必须先把libevent库安装了。先用 ls -al /usr/lib | grep libevent 或者  ls -al /usr/local/lib | grep libevent来看看linux是否已经安装了libevent库,发现没有安装。然后就去下载了libevent 2.0版本的源码,解压,进入目录,./configure,make,make install 安装完毕,用ls -al 命令查看发现安装成功。但是是安装到/usr/local/lib目录下面的,所以要用  ln -s /usr/local/lib/libevent-2.0.so /usr/lib/libevent-2.0.so
  2. http://pecl.php.net/网站把libevnt的扩展包下下来,然后解压缩,进入目录,执行phpize来生成configure文件,./configure,make,make install,安装完成。安装完成后还要在php.ini里面把 extension=libevent.so 这句话加上。结果我发现我有两个php.ini文件,一个是/etc/php5/cli/php.ini,另外一个是/etc/php5/apache2/php.ini文件,不知道写在哪个文件,我就把两个文件都加了那句话。加完还要重启一下apache才行,这点pecl网站都没写。重启的命令:/etc/init.d/apache2 restart。
    后来试了一下,貌似要加到cli目录下的php.ini文件里面才行。
  3. 验证安装:php -m查看库,可以看到libevent。


2012年8月21日星期二

简单的启动和关闭虚拟机的bat文件

为了不要每次在cmd里面输入命令,写了两个简单的bat文件来启动和关闭虚拟机。
1.启动虚拟机(startvm.bat):

@echo off
cd "c:\Program Files\Oracle\VirtualBox"
VBoxManage.exe startvm ubuntu --type headless
exit

2.关闭虚拟机(closevm.bat)

@echo off
cd "c:\Program Files\Oracle\VirtualBox"
VBoxManage.exe controlvm ubuntu poweroff
exit

机器加了2g的内存后现在是4g内存了,当然在32位系统里面只用了3g多。不过一开虚拟机后内存占用居然还是飙到了2.3个G,汗啊。不过在我的ssd加4g内存的条件下,虚拟机速度还是不错的,比以前hdd加2g内存好多了。

排查php占cpu%的一些手段

    今天偶然发现php大概有1分钟的时间一直占用100%的cpu,首次碰到这种情况,除了查看程序的log之外就没有想到什么手段来排查了。于是乎google之,找到一些手段,下一步就是把这些手段加到同事写的监控脚本里面。监控脚本的基本思想,每隔一段时间查看cpu的利用率,如果发现是100%的cpu占用,则把这个时刻的各种进程信息grep下来,并到程序log里面根据进程号和时间grep相应的日志。把现场环境grep后发邮件到相关人等。
    一些监控的手段:
    1.top命令查看cpu利用率。
    2.ls -l /proc/进程号/fd/ 查看进程在干嘛
    3.strace -p 13827 可以实时的看进程在干嘛

参考文章:php-cgi占用cpu100%的一次排障之旅 以及 PHP-CGI 进程 CPU 100% 与 file_get_contents 函数的关系
       

2012年8月19日星期日

LAMP环境搭建

搞了这么久php,今天才算是花时间在笔记本上面搭建了一个lamp环境。其中无非是安装php,apache,mysql,这些在ubuntu下面都是apt-get install来解决了,很方便。这里稍微记录一下。
1.基本的安装:参考了这篇文章:ubuntu安装lamp环境
2.一点补充的安装(phpmyadmin):ubuntu 12.04下LAMP安装配置
3.补充一点,要安装扩展的话,需要phpize,这样来安装:apt-get install php5-dev
4.因为是用的virtualbox来做虚拟机,不想每次都启动gui,所以用命令行方式:在cmd里面,找到virtualbox的安装牡蛎,里面有个程序是vboxmanage,用这个命令来启动
vboxmanage startvm ubuntu --type headless
参考:Linux下虚拟机VirtualBox后台运行

2012年8月2日星期四

消除Zendstudio的黄色惊叹号

虽然zend有点慢,不过功能还是比较全的。但是有个问题,有些系统函数都识别不出来,一直提示黄色的惊叹号(比如printf)。在网上搜了一下,兼自己实践,解决方法如下:在新建项目的时候,最后会提示导入哪些库,这时候选择所有的库,项目建好后可以看到黄色的惊叹号就没有了。查看项目文件".buildpath",内容如下:

 <?xml version="1.0" encoding="UTF-8"?>
<buildpath>
        <buildpathentry kind="con" path="com.zend.php.phpunit.CONTAINER"/>
        <buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/>
        <buildpathentry kind="src" path=""/>
        <buildpathentry kind="con" path="org.zend.php.framework.CONTAINER"/>
<buildpath>
 实际上就是在build的时候增加库的搜索。

网上搜到的文章也是类似的解决思路,如:ZendStudio ZS PHP函数黄色叹号问题.
不过我现在还用了php 进程控制的一些函数,没有被识别出来,后续看看在哪里可以添加相关的库。