本节主要内容:
centos6.4系统中安装与配置redis与phpredis
首先,来学习下redis的安装方法。
一、redis
1.下载安装
$ tar xzf redis-2.6.16.tar.gz
$ cd redis-2.6.16
$ make install
2.配置
$ cp redis.conf /etc/redis/redis.conf
$ gedit /etc/sysctl.conf$ sysctl -p
注:sysctl.conf文件尾部加上vm.overcommit_memory=1
3.启动测试
$ /usr/local/bin/redis-cli
$ set test xjx
$ get test
4.开机启动
$ gedit /etc/redis/redis.conf
设置daemonize yes
$ gedit /var/run/redis.pid
直接保存,主要是创建该文件
gedit /etc/init.d/redis
编辑脚本,也可以自己下载或者输入以下内容
#!/bin/bash
#
# redis - this script starts and stops the redis-server daemon
#
# chkconfig: - 80 12
# description: Redis is a persistent key-value database
# processname: redis-server
# config: /etc/redis/redis.conf
# pidfile: /var/run/redis.pid
source /etc/init.d/functions
BIN="/usr/local/bin"
CONFIG="/etc/redis/redis.conf"
PIDFILE="/var/run/redis.pid"
### Read configuration
[ -r "$SYSCONFIG" ] && source "$SYSCONFIG"
RETVAL=0
prog="redis-server"
desc="Redis Server"
start() {
if [ -e $PIDFILE ];then
echo "$desc already running...."
exit 1
fi
echo -n $"Starting $desc: "
daemon $BIN/$prog $CONFIG
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
return $RETVAL
}
stop() {
echo -n $"Stop $desc: "
killproc $prog
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog $PIDFILE
return $RETVAL
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
condrestart)
[ -e /var/lock/subsys/$prog ] && restart
RETVAL=$?
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
RETVAL=1
esac
exit $RETVAL
改变文件权限:
添加开机启动:
$ chkconfig --level 345 redis on
$ chkconfig --list redis
之后重启服务器,$ service redis status 查看是否正确配置
接下来介绍phpredis的安装与配置方法。
二、phpredis
1.自行下载解压
https://github.com/nicolasff/phpredis/archive/master.zip
2.安装
$ /usr/local/php/bin/phpize
$ ./configure --with-php-config=/usr/local/php/bin/php-config
$ make && make install
注:路径根据实际情况修改
3.php扩展
$ gedit /usr/local/php/etc/php.ini
加入extension=redis.so,然后重启php-fpm(非nginx)
4.测试
$redis->connect('127.0.0.1',6379);
$redis->set('test','hello world!');
echo $redis->get('test');
三、phpredisadmin
http://down.admin5.com/php/75024.html
下载解压至www目录即可,这里提供大家,最好不用官方最新版本,个中原由,你用了就明白啦。
说明:
使用curl前确保php_curl扩展已经开启。
一、curl使用
例如:采集深圳智联招聘上PHP招聘的第一页信息
<?php
$url='http://sou.zhaopin.com/jobs/searchresult.ashx?jl=%E6%B7%B1%E5%9C%B3&kw=php&sm=0&p=1';
//初始化
$ch = curl_init();
//设置选项,包括URL
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//不自动输出内容
curl_setopt($ch, CURLOPT_HEADER, 0);//不返回头部信息
//执行curl
$output = curl_exec($ch);
//错误提示
if(curl_exec($ch) === false){
die(curl_error($ch));
}
//释放curl句柄
curl_close($ch);
header('Content-type: text/html; charset=utf-8');
echo $output;
当然,必须对返回的数据使用<<正则表达式>>处理,找出想要的那一部分,然后根据需要把数据填充到网站中。
代码:
<?php
//职位名称
preg_match_all('/<td >.*?<a\s*href="/blog_article/(/)._"\starget="_blank">(.*?)<\/a>/s', $output, $title);
$title[1];//链接
$title[2];//标题
//公司名称
preg_match_all('/<td >.*?<a href="/blog_article/(/)._"\starget="_blank">(.*?)<\/a>/s', $output, $company);
$company[1];//链接
$company[2];//名字
//工作地点
preg_match_all('/<td >\s*(.*?)\s*<\/td>/s', $output, $address);
$address[1];//地点
//发布日期
preg_match_all('/<td >\s*(.*?)\s*<\/td>/s', $output, $time);
$time[1];//时间
var_dump($time[1]);
二、常用功能
curl的核心是通过设置各种选项来达到各种功能,这里我们介绍几种常用的选项。
1.post数据
$post=array(
'uid'=>'test',
'pwd'=>'curl123'
);
curl_setopt($ch, CURLOPT_POST, 1);//设置为POST方式
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));//POST数据
2.cookie
$savefile=dirname(__FILE__).'save.txt';
$getfile=dirname(__FILE__).'get.txt';
//可以分开使用
curl_setopt($ch, CURLOPT_COOKIEJAR, $savefile); //保存
curl_setopt($ch, CURLOPT_COOKIEFILE, $getfile); //读取
3.伪造IP、来路
curl_setopt($ch, CURLOPT_REFERER, "http://www.baidu.com");//构造来路
curl_setopt选项大全,详见PHP手册:http://www.php.net/manual/zh/function.curl-setopt.php
三、多线程
官方示例
<?php
// 创建一对cURL资源
$ch1 = curl_init();
$ch2 = curl_init();
// 设置URL和相应的选项
curl_setopt($ch1, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt($ch2, CURLOPT_URL, "http://www.php.net/");
curl_setopt($ch2, CURLOPT_HEADER, 0);
// 创建批处理cURL句柄
$mh = curl_multi_init();
// 增加2个句柄
curl_multi_add_handle($mh,$ch1);
curl_multi_add_handle($mh,$ch2);
$running=null;
// 执行批处理句柄
do {
usleep(10000);
curl_multi_exec($mh,$running);
} while ($running > 0);
// 关闭全部句柄
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);
PHP中__FUNCTION__与__METHOD__的区别,主要在以下二点:
使用__FUNCTION__仅传回函数名称
使用__METHOD__传回类名称与函数名称
下面,我们创建一个类,来体会下二者的区别。
代码:
function fa() {
return __METHOD__;
}
function fb() {
return __FUNCTION__;
}
}
$Obj = new a();
echo $Obj->fa();// output a::fa
echo $Obj->fb();// output fb