2013年7月 的存档

PHP 下查看memcached使用情况的工具

2013年7月14日 没有评论

在php官网上提供了一个工具可以查看memcached的使用情况,提供的信息还是比较全面的。下载地址:http://pecl.php.net/package/memcache。下载解压后找到一个名为memcache.php的文件,拷贝此文件到项目中,同时修改文件中一下几个地方。

//设置能访问此页面的用户名和密码
define('ADMIN_USERNAME','memcache'); 
define('ADMIN_PASSWORD','password');

//设置memcached服务器的IP和端口,如果有多个memcached服务器,配置多行
$MEMCACHE_SERVERS[] = 'mymemcache-server1:11211'; 
$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211';

通过上述操作,就可以通过访问http://your domain/memcache.php来查看memcached的使用情况了,结果如下图。

分类: PHP 标签:

php curl 分离header和body信息

2013年7月9日 没有评论

php中可以通过curl来模拟http请求,同时可以获取http response header和body,当然也设置参数可以只获取其中的某一个。当设置同时获取response header和body时候,它们会一同作为结果返回。这时需要我们自己来分离它们。

下面代码是模拟向google一个http GET请求

function httpGet() {
    $url = 'http://www.google.com.hk';
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, TRUE);    //表示需要response header
    curl_setopt($ch, CURLOPT_NOBODY, FALSE); //表示需要response body
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);
    curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
    curl_setopt($ch, CURLOPT_TIMEOUT, 120);
    
    $result = curl_exec($ch);
    
    if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == '200') {
        return $result;
    }
    
    return NULL;
}

调用上述方法后看到如下类似输出:

HTTP/1.1 200 OK
Date: Tue, 09 Jul 2013 14:21:08 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=UTF-8
Set-Cookie: PREF=ID=75e996a7ad21f47b:FF=0:NW=1:TM=1373379668:LM=1373379668:S=TTLQQN-jwGDYnkkY; expires=Thu, 09-Jul-2015 14:21:08 GMT; path=/; domain=.google.com.hk
Set-Cookie: NID=67=PPu7FfFeuZqwfsrUifgzjidX4JZxxCPLe9xFHjdXhfHpzs3gaykFSH5uGXy2esWTlp_rdqIYkjFDMollzI_sA-8owxD3mDh6KCRwdMa9-g5VChj0E5XAGNjo9d-sZfLN; expires=Wed, 08-Jan-2014 14:21:08 GMT; path=/; domain=.google.com.hk; HttpOnly
P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
Server: gws
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Transfer-Encoding: chunked

<!doctype html><html itemscope="itemscope" itemtype="http://schema.org/WebPage"><head><meta itemprop="image" content="/images/google_favicon_128.png"><title>Google</title><script>(function(){
window.google={kEI:"VBzcUdWuHOmtiQf64IHoCw",getEI:function(a){for(var b;a&&(!a.getAttribute||!(b=a.getAttribute("eid")));
……

这里可以看到结果中header和body信息是在一起的,那么如何分离它们呢。方法有二种,一是通过curl自带的curl_getinfo()方法获取头的长度,然后使用substr来分割字符串。示例代码如下:

$response = curl_exec($ch);

if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == '200') {
    $headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
    $header = substr($response, 0, $headerSize);
    $body = substr($response, $headerSize);
}

第二种方法基于header和body是通过两个回车换行来分割的,所以可以通过如下代码实现:

$response = curl_exec($ch);

if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == '200') {
    list($header, $body) = explode("\r\n\r\n", response, 2);
}
分类: PHP 标签:

mac os lion php 调用imagemagick命令失败

2013年7月9日 没有评论

环境为Mac OS lion,在php中使用exec调用外部imagemagick命令进行图片处理,图片没有被处理,查看命令返回的状态码为5,没有任何提示,相同的命令在命令行中可以正常执行。为了获取具体的错误信息还花费了一番力气,关于获取错误输出可以参考:PHP 执行外部命名获取出错信息
上述错误信息为:

dyld: Library not loaded: /ImageMagick-6.7.5/lib/libMagickCore.5.dylib
  Referenced from: /usr/bin/convert

从错误信息可以得知命令没有加载到Library,从Imagemagick官网看到Mac OS下安装需要配置DYLD_LIBRARY_PATH,它的路径就是Imagemagick安装路径下的lib目录。由于在/etc/bashrc中配置了,所以命令行下执行是正常的。通过web方式执行php环境不一样,没有加载DYLD_LIBRARY_PATH配置,因此导致执行出错。有了错误信息,也知道错误的原因,解决起来就很简单了,只需要在执行命令的前面添加DYLD_LIBRARY_PATH配置即可。例如:

$cmd = 'export DYLD_LIBRARY_PATH="/{imagemagick install home}/lib/" && ';
$cmd .= 'convert -resize 120x60 src.jpg desc.jpg';
exec($cmd);
分类: ImageMagicK 标签:

PHP 执行外部命名获取出错信息

2013年7月7日 没有评论

php中提供了四种方法来执行外部命令,外面命令可以是一个系统命令或自己实现的shell(Linux)、批处理(window)脚本。四种调用方法分别是exec()、passthru()、system()、shell_exec()。关于它们的区别可以参看:http://www.leapsoul.cn/?p=646。

本文主要介绍在linux系统下如何获取命令出错的信息。出错包括命令执行时候出错和命名拼写错误等。上述四种方法只会返回命令执行返回码,没有具体的出错信息。想要获取具体的出错信息,可以把命令执行的输出结果输出到一个文件。利用符号 “>”即可。例如:

$cmd = 'your command >/tmp/test.log 2>&1';
exec($cmd);

命令输出的信息可以在/tmp/test.log中找到。

分类: PHP 标签:

无觅相关文章插件,快速提升流量