centos7源码安装mysql5.7+版本并实现多个实例

一、安装前准备工作

1.1 检查 linux 系统版本

[code][root@localhost ~]#cat /etc/system-release[/code]

1.2 检查是否安装了 mysql

[code]
[root@localhost ~]# rpm -qa | grep mysql
[root@localhost ~]# rpm -e –nodeps mysql-connector-odbc-5.2.5-6.el7.x86_64
[/code]

若存在 mysql 安装文件,则会显示 mysql安装的版本信息
如:mysql-connector-odbc-5.2.5-6.el7.x86_64
卸载已安装的MySQL,卸载mysql命令,如下:
将/var/lib/mysql文件夹下的所有文件都删除干净。
细节注意:
检查一下系统是否存在 mariadb 数据库,如果有,一定要卸载掉,否则可能与 mysql 产生冲突。
系统安装模式的是最小安装,所以没有这个数据库。
检查是否安装了 mariadb,如果有就使劲卸载干净:

[code]
[root@localhost ~]# rpm -qa | grep mariadb
[root@localhost ~]# systemctl stop mariadb
[root@localhost ~]# rpm -qa | grep mariadb
[root@localhost ~]# rpm -e –nodeps mariadb-5.5.52-1.el7.x86_64
[root@localhost ~]# rpm -e –nodeps mariadb-server-5.5.52-1.el7.x86_64
[root@localhost ~]# rpm -e –nodeps mariadb-libs-5.5.52-1.el7.x86_64
[/code]

1.3 系统内存检查
安装5.6以及以上版本的mysql需要服务器的内存至少在1G以上。

1.4 安装必要的软件包
yum -y install gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake

1.5 下载安装文件,下载源码版本,选择Source Code
wget https://downloads.mysql.com/archives/get/file/mysql-5.7.23.tar.gz

二、安装

2.1 添加用户

[code]
[root@localhost ~]# groupadd mysql
[root@localhost ~]# useradd -r -g mysql mysql
[/code]

2.2 创建安装目录
[code]
[root@localhost ~]# mkdir -p /home/wwwroot/mysql
[root@localhost ~]# chown -R mysql:mysql /home/wwwroot/mysql
[/code]

2.3 编译安装
[code]
[root@localhost ~]# tar -zxvf mysql-5.7.23.tar.gz
[root@localhost ~]# cd mysql-5.7.23
[root@localhost ~]# cmake \
-DCMAKE_INSTALL_PREFIX=/home/wwwroot/mysql \
-DMYSQL_DATADIR=/home/wwwroot/mysql/data3306 \
-DSYSCONFDIR=/home/wwwroot/mysql/ \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/home/wwwroot/mysql/mysqld3306.sock\
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost \
-DMYSQL_USER=mysql \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci

[root@localhost ~]# make && make install
[/code]

参数说明:
DCMAKE_INSTALL_PREFIX=/usr/local/mysql:安装路径
DMYSQL_DATADIR=/data/mysql:数据文件存放位置
DSYSCONFDIR=/etc:my.cnf路径
DWITH_MYISAM_STORAGE_ENGINE=1:支持MyIASM引擎
DWITH_INNOBASE_STORAGE_ENGINE=1:支持InnoDB引擎
DMYSQL_UNIX_ADDR=/data/mysql/mysqld.sock:连接数据库socket路径
DMYSQL_TCP_PORT=3306:端口
DENABLED_LOCAL_INFILE=1:允许从本地导入数据
DWITH_PARTITION_STORAGE_ENGINE=1:安装支持数据库分区
DEXTRA_CHARSETS=all:安装所有的字符集
DDEFAULT_CHARSET=utf8:默认字符
DWITH_EMBEDDED_SERVER=1:嵌入式服务器

2.4 第一种安装方式:每个端口的配置文件独立
2.4.1 添加配置文件,并初始化数据库,实例化两个端口
my3306.cnf
[code]
[client]
port = 3306
socket = /home/wwwroot/mysql/mysql3306.sock

[mysqld]
basedir = /home/wwwroot/mysql
datadir = /home/wwwroot/mysql/data3306
port = 3306
socket = /home/wwwroot/mysql/mysql3306.sock

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[/code]
my3307.cnf
[code]
[client]
port = 3307
socket = /home/wwwroot/mysql/mysql3307.sock

[mysqld]
basedir = /home/wwwroot/mysql
datadir = /home/wwwroot/mysql/data3307
port = 3307
socket = /home/wwwroot/mysql/mysql3307.sock

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[/code]
[code]
[root@localhost ~]# /home/wwwroot/mysql/bin/mysqld \
–defaults-file=/home/wwwroot/mysql/my3306.cnf \
–user=mysql \
–basedir=/home/wwwroot/mysql \
–datadir=/home/wwwroot/mysql/data3306 \
–initialize-insecure

[root@localhost ~]# /home/wwwroot/mysql/bin/mysqld \
–defaults-file=/home/wwwroot/mysql/my3307.cnf \
–user=mysql \
–basedir=/home/wwwroot/mysql \
–datadir=/home/wwwroot/mysql/data3307 \
–initialize-insecure
[/code]
initialize-insecure#不需要密码
2.4.2 启动mysql后台运行
[code]
[root@localhost ~]# /home/wwwroot/mysql/bin/mysqld_safe –defaults-extra-file=/home/wwwroot/mysql/my3306.cnf –user=mysql &
[root@localhost ~]# /home/wwwroot/mysql/bin/mysqld_safe –defaults-extra-file=/home/wwwroot/mysql/my3307.cnf –user=mysql &
[/code]
如果只是单例(一台服务器只运行一个端口),可以用下面的方式添加服务,拷贝服务脚本到init.d目录
[code]
[root@localhost ~]# cp /home/wwwroot/mysql/support-files/mysql.server /etc/init.d/mysql
[root@localhost ~]# chkconfig mysql –add
[root@localhost ~]# chkconfig mysql on
[root@localhost ~]# service mysql start
[root@localhost ~]# service mysql restart
[root@localhost ~]# service mysql stop
[/code]

2.4.5 进入3307端口的mysql,初始化root密码
[code]
[root@localhost ~]# mysql -u root -p -S /home/wwwroot/mysql/mysql3307.sock
[root@localhost ~]# SET PASSWORD = PASSWORD(‘123456′);
[root@localhost ~]# GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ IDENTIFIED BY ‘123456’ WITH GRANT OPTION;
[root@localhost ~]# flush privileges;
[/code]
建立软连接,不然mysql -uroot执行不了
[code]ln -s /home/wwwroot/mysql/bin/mysql /usr/bin[/code]

2.4.6 停止MYSQL实例,对应的sock文件
[code]
[root@localhost ~]# /home/wwwroot/mysql/bin/mysqladmin -u root -p123456 -S /home/wwwroot/mysql/mysql3306.sock shutdown
[root@localhost ~]# /home/wwwroot/mysql/bin/mysqladmin -u root -p123456 -S /home/wwwroot/mysql/mysql3307.sock shutdown
[/code]

2.5 第二种安装方式:使用mysql自带的多实例
2.5.1 初始化数据库,使用同一个配置文件
my.cnf
[code]
[mysqld_multi]
mysqld =/home/wwwroot/mysql/bin/mysqld_safe
mysqladmin=/home/wwwroot/mysql/bin/mysqladmin
log =/home/wwwroot/mysql/log/mysql_multi.log
user =xxx
password =xxx

[mysqld3306]
# 设置监听开放端口 [多实例中一定要不同]
port = 3306
# 设置运行用户
#user=mysql
basedir =/home/wwwroot/mysql
# 设置数据目录 [多实例中一定要不同]
datadir =/home/wwwroot/mysql/data3306
# 设置sock存放文件名 [多实例中一定要不同]
socket =/home/wwwroot/mysql/mysql3306.sock
#log-error =/home/wwwroot/mysql/log/mysql3306.log
pid-file =/home/wwwroot/mysql/mysql3306.pid

[mysqld3307]
port = 3307
#user=mysql
basedir =/home/wwwroot/mysql
datadir =/home/wwwroot/mysql/data3307
socket =/home/wwwroot/mysql/mysql3307.sock
#log-error =/home/wwwroot/mysql/log/mysql3307.log
pid-file =/home/wwwroot/mysql/mysql3307.pid
[/code]
2.5.2 初始化数据库
[code]
[root@localhost ~]# /home/wwwroot/mysql/bin/mysqld \
–defaults-file=/home/wwwroot/mysql/my.cnf \
–user=mysql \
–basedir=/home/wwwroot/mysql \
–datadir=/home/wwwroot/mysql/data3306 \
–initialize-insecure

[root@localhost ~]# /home/wwwroot/mysql/bin/mysqld \
–defaults-file=/home/wwwroot/mysql/my.cnf \
–user=mysql \
–basedir=/home/wwwroot/mysql \
–datadir=/home/wwwroot/mysql/data3307 \
–initialize-insecure
[/code]
2.5.3 启动mysql
[code][root@localhost ~]# /home/wwwroot/mysql/bin/mysqld_multi –defaults-file=/home/wwwroot/mysql/my.cnf start [/code]
有可能会报错,需要执行下面的代码设置PATH
[code]
[root@localhost ~]# vi /etc/profile
[/code]
找到export PATH=段,加入:/home/wwwroot/mysql/bin
也可以使用
[code]
[root@localhost ~]# cp /home/wwwroot/mysql/support-files/mysqld_multi.server /etc/init.d/mysqld_multi
[root@localhost ~]# service mysqld_multi start 3306,3307
[root@localhost ~]# service mysqld_multi restart
[root@localhost ~]# service mysqld_multi stop
[/code]
如果后面不加3306或者3307默认是对所有的实例进行操作,my.cnf中设置的mysqld_multi段中设置的用户密码在stop的时候会用到,因为是明文,所以需要修改启动脚本
[code]
[root@localhost ~]# vi bin/mysqld_multi
修改
my $com= join ‘ ‘, ‘my_print_defaults’, @defaults_options, $group;

my $com= join ‘ ‘, ‘my_print_defaults -s’, @defaults_options, $group;
[/code]
2.5.4 查看实例的运行状态
[code]
[root@localhost ~]# service mysqld_multi report
[root@localhost ~]# /home/wwwroot/mysql/bin/mysqld_multi report
[/code]

php字符串的Heredoc、Nowdoc结构

Heredoc 结构

第三种表达字符串的方法是用 heredoc 句法结构:<<<。在该运算符之后要提供一个标识符,然后换行。接下来是字符串 string 本身,最后要用前面定义的标识符作为结束标志。

结束时所引用的标识符必须在该行的第一列,而且,标识符的命名也要像其它标签一样遵守 PHP 的规则:只能包含字母、数字和下划线,并且必须以字母和下划线作为开头。

Heredoc 结构就象是没有使用双引号的双引号字符串,这就是说在 heredoc 结构中单引号不用被转义,但是上文中列出的转义序列还可以使用。变量将被替换,但在 heredoc 结构中含有复杂的变量时要格外小心。
[php]
<?php
$bar = <<<LABEL
Nothing in here...
LABEL;
?>
[/php]

Nowdoc 结构

就象 heredoc 结构类似于双引号字符串,Nowdoc 结构是类似于单引号字符串的。Nowdoc 结构很象 heredoc 结构,但是 nowdoc 中不进行解析操作。这种结构很适合用于嵌入 PHP 代码或其它大段文本而无需对其中的特殊字符进行转义。与 SGML 的

一个 nowdoc 结构也用和 heredocs 结构一样的标记 <<<, 但是跟在后面的标识符要用单引号括起来,即 <<<'EOT'。Heredoc 结构的所有规则也同样适用于 nowdoc 结构,尤其是结束标识符的规则。
[php]

<?php
class foo {
public $bar = <<<'EOT'
bar
EOT;
}
?>

[/php]

composer的使用

一、安装

windows :
下载 https://getcomposer.org/Composer-Setup.exe

linux:
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

二、安装包列表
安装包列表:https://packagist.org/,只是一个链接,真正的php程序包存放在github第三方版本库上
中国镜像:https://pkg.phpcomposer.com/,加速下载

三、构建自己的项目

github注册帐号,并创建一个项目;

本地通过SVN或者GIT检出项目;

命令行模式,进入项目文件夹,执行composer init命令;

填写相关的项目信息后会生成一个composer.json文件,将这个文件提交到github版本库上面去;

登录https://packagist.org/,点击Submit,填写github的项目地址,packagist会根据composer.json文件去自动抓取项目信息;

如果github的项目源码有任何更改,需要手动在packagist上面点击update【实际测试后发现已经是自动同步的了,github默认已经自动加上了钩子推送,可以在github的项目setting->webhooks中去查看】;

四、使用构建的项目

进入项目文件夹执行 composer create-project netljc/composer test1 dev-master –prefer-dist

test1为项目名称

查看当前镜像: composer config -g repo.packagist

切换成原镜像 composer config -g repo.packagist composer https://packagist.org 加上-g是全局配置 不加就需要在具体的项目文件夹下去执行

切换成国内镜像 composer config -g repo.packagist composer https://packagist.phpcomposer.com,国内镜像有可能提交了代码,但镜像并未及时更新,最后找不到包

composer官网:http://getcomposer.org/
composer中文网:http://www.phpcomposer.com/

五、composer的主要命令
1、搜索 search,搜索monolog库
composer search monolog

2、展示show,查询库的信息
composer show –all monolog/monolog

3、申明依赖require,composer.json中去填写
“require”:{
“monolog/monolog”:”1.21.*”
}
composer require monolog/monolog require命令自动下载并添加依赖
4、安装install,安装require申明的依赖
composer install

5、更新update
打开composer.json,删除 “monolog/monolog”:”1.21.*”,然后执行 composer update,就可以卸载不用的依赖包

word在线预览方案

LINUX:

1、安装java环境和基础配置
yum install gcc-c++
yum -y install giflib-devel libjpeg-devel freetype-devel t1lib-devel zlib
yum -y install  java-1.6.0-openjdk*
yum -y install mkfontscale
2、安装openoffice
cd RPMS
rpm –ivh *rpm(安装所有rpm文件)
cd desktop-integration
rpm -ivh openoffice.org3.2-redhat-menus-3.2-9472.noarch.rpm

3、启动openOffice服务
cd /opt
cd openoffice.org4
cd program
/opt/openoffice.org4/program/soffice -headless -accept=”socket,host=127.0.0.1,port=8100;urp;” -nofirststartwizard &

4、测试doc转pdf
java -jar /opt/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar /home/php/1.doc /home/php/1.pdf

5、安装swftools
tar xzf swftools-0.9.1.tar.gz
cd swftools-0.9.1
./configure
make
make install

6、测试pdf转swf
pdf2swf -o /home/php/1.swf -T -z -t -f /home/php/1.pdf -s languagedir=/usr/local/share/xpdf/chinese-simplified flashversion=9

7、解决中文转换后乱码(将 windows下的simsun.tcc 字体拷贝到 /usr/share/fonts/simsun/ 下并且重建Linux字体索引)
mkfontscale
mkfontdir
fc-cache
soffice -headless -accept=”socket,host=127.0.0.1,port=8100;urp;” -nofirststartwizard &

开机启动openoffice
编辑/etc/rc.local
在最后面,添加:
/usr/lib/program/soffice -headless -accept=”socket,port=8100;urp;”

netstat -ntlp(查看端口占用情况)
pgrep soffice(查看soffice涉及到的pid)
kill -s 9 2028(杀死2028这个pid)

WINDOWS:

windows安装
1、下载安装openoffice

http://netassist.dl.sourceforge.net/project/openofficeorg.mirror/4.1.2/binaries/zh-CN/Apache_OpenOffice_4.1.2_Win_x86_install_zh-CN.exe

2、启动openoffice服务
cd C:/Program Files (x86)/OpenOffice 4/program
soffice -headless -accept=”socket,host=127.0.0.1,port=8100;urp;” -nofirststartwizard &

3、安装java jdk

http://211.162.175.31/files/2173000002252678/202.201.14.199/download.oracle.com/otn-pub/java/jdk/8u65-b17/jdk-8u65-windows-i586.exe

4、测试转换
C:/Program Files (x86)/Java/jdk1.8.0_65/bin/java -jar D:/server/www/anguan/lib/jodconverter-cli-2.2.2.jar D:/server/www/anguan/test.docx D:/server/www/anguan/test.pdf

5、安装swftools

http://www.swftools.org/swftools-0.9.0.exe

windows下安装完成后发现php无法调用openoffice命令,之后发现删除了apache的日志文件重启apache后就能调用成功,暂时还没找到原因是什么。

flexpaper调用实例word.tar

centos安装基于sphinx的全文检索coreseek

全文检索coreseek基于sphinx加入mmseg,支持中文分词,测试环境在cenos6.5;安装之前需要先安装php开发环境(此处略过),同时安装预装软件:yum install make gcc g++ gcc-c++ libtool autoconf automake imake libxml2-devel expat-devel

1、安装mmseg
$ wget http://www.coreseek.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz
$ tar xzvf coreseek-3.2.14.tar.gz
$ cd coreseek-3.2.14
$ cd mmseg-3.2.14
$ ./bootstrap
$ ./configure –prefix=/usr/local/mmseg3
$ make && make install

2、安装coreseek
$ cd csft-3.2.14
$ sh buildconf.sh
$ ./configure –prefix=/usr/local/coreseek –without-python –without-unixodbc –with-mmseg –with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ –with-mmseg-libs=/usr/local/mmseg3/lib/ –without-mysql

##coreseek4.x/sphinx1.x,请将–without-mysql更改为–with-mysql
$ vim src/makefile
##在其中搜索lexpat,在其后加上 -liconv,修改后该行应该为:-lexpat -liconv -L/usr/local/lib
$ make && make install

在下载的目录中有一个testpack目录
api-搜索api
etc-配置文件目录
var-基础数据目录包含测试数据库文件

3、配置索引文件
$ cp testpack/etc/csft_mysql.conf csft.conf
$ vi /usr/local/coreseek/etc/csft.conf
==============================================
#源定义
source mysql
{
type = mysql #数据库类型

sql_host = localhost #数据库地址
sql_user = root #数据库用户名
sql_pass = 123456 #数据库密码
sql_db = test #数据库
sql_port = 3306
#预查询
sql_query_pre = SET NAMES utf8 #设置字符集
#主查询
sql_query = SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content FROM documents #sql_query第一列id需为整数 title、content作为字符串/文本字段,被全文索引
sql_attr_uint = group_id #无符号整数属性 从SQL读取到的值必须为整数
#声明UNIX时间戳属性
sql_attr_timestamp = date_added #从SQL读取到的值必须为整数,作为时间属性

sql_query_info_pre = SET NAMES utf8 #命令行查询时,设置正确的字符集
sql_query_info = SELECT * FROM documents WHERE id=$id #命令行查询时,从数据库读取原始数据信息
}

#index定义
index mysql
{
source = mysql #对应的source名称
path = /usr/local/coreseek/var/data #索引文件存放路径 请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/…
docinfo = extern
mlock = 0
morphology = none
min_word_len = 1
html_strip = 0

#中文分词配置,详情请查看:http://www.coreseek.cn/products-install/coreseek_mmseg/
charset_dictpath = /usr/local/mmseg3/etc/ #指明分词法读取词典文件的位置 BSD、Linux环境下设置,/符号结尾
#charset_dictpath = etc/ #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/…
stopwords = /usr/local/mmseg3/etc/stopwords.txt #可选设置,表示停止词文件,该文件中的词汇(也可以为单字)不参与搜索;文件格式为普通UTF-8文本文件,每行一个;
charset_type = zh_cn.utf-8
}

#全局index定义
indexer
{
mem_limit = 128M
}

#searchd服务定义
searchd
{
listen = 9312 #监听端口
read_timeout = 5
max_children = 30
max_matches = 1000 #最大匹配数,也就是查找的数据再多也只返回这里设置的1000条
seamless_rotate = 0
preopen_indexes = 0
unlink_old = 1
pid_file = /usr/local/coreseek/var/log/searchd_mysql.pid #pid文件路径 请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/…
log = /usr/local/coreseek/var/log/searchd_mysql.log #全文检索日志 请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/…
query_log = /usr/local/coreseek/var/log/query_mysql.log #查询日志 请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/…
}
=============================================
$ /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf –all #全部索引 -c代表指定配置文件 –quiet 安静模式 –rotate 建立索引后重启searchd 可以指定特定的索引(多个用空格隔开) 不指定配置文件的话默认使用/usr/local/coreseek/etc/csft.conf
$ /usr/local/coreseek/bin/searchd -c etc/csft.conf –port 9312 #运行守护进程
$ /usr/local/coreseek/bin/searchd -c etc/csft.conf –stop #停止服务
$ /usr/local/coreseek/bin/indexer -c etc/csft.conf –all –rotate #更新索引
$ /usr/local/coreseek/bin/search Twittter和Opera都提供了搜索服务 #测试搜索

4、开机启动coreseek服务的设置

vi /etc/init.d/auto_coreseek.sh

[php]<br />
#!/bin/sh<br />
#chkconfig:2345 80 90<br />
#description:auto_coreseek<br />
/usr/local/coreseek/bin/searchd<br />
[/php]

加上可执行权限
chmod +x /etc/init.d/auto_coreseek.sh

然后加到开机启动中:
chkconfig –add auto_coreseek.sh

yii中获取GET、POST、COOKIE、SESSION的方法

Yii::app()->request->getParam(string $name, mixed $defaultValue=NULL) 相当于REQUEST

Yii::app()->request->getPost(string $name, mixed $defaultValue=NULL) 相当于post

Yii::app()->request->getBrowser() 返回用户浏览器的相关信息

Yii::app()->request->getCookies() 返回cookie信息

Yii::app()->session[‘name’];返回session信息

php带验证码模拟登录

[php]</p>
<p>&lt;?php<br />
/**<br />
* 模拟登录<br />
*/<br />
@header(‘Content-type: text/html;charset=UTF-8′);<br />
//初始化变量<br />
$cookie_file = &quot;tmp.cookie&quot;;<br />
//$cookie_file = &quot;D:/cookie.txt&quot;;<br />
$login_url = &quot;http://www.netljc.com/member/login/&quot;;<br />
$verify_code_url = &quot;http://www.netljc.com/authimg/show/?r=14098110290&quot;;<br />
echo &quot;COOKIE获取完成,正在取验证码…&lt;br/&gt;&quot;;<br />
//取出验证码<br />
$curl = curl_init();<br />
curl_setopt($curl, CURLOPT_URL, $verify_code_url);<br />
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);//使用储存cookie的文件<br />
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_file); //获取COOKIE并存储<br />
curl_setopt($curl, CURLOPT_HEADER, 0);<br />
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);<br />
$img = curl_exec($curl);<br />
curl_close($curl);</p>
<p>$fp = fopen(&quot;verifyCode.jpg&quot;,&quot;w&quot;);<br />
fwrite($fp,$img);<br />
fclose($fp);<br />
echo &quot;验证码取出完成,正在休眠,20秒内请把验证码填入code.txt并保存&lt;br/&gt;&quot;;<br />
//停止运行20秒<br />
sleep(25);</p>
<p>echo &quot;休眠完成,开始取验证码…&lt;br/&gt;&quot;;<br />
$code = file_get_contents(&quot;code.txt&quot;);<br />
echo &quot;验证码成功取出:$code&lt;br/&gt;&quot;;<br />
echo &quot;正在准备模拟登录…&lt;br/&gt;&quot;;</p>
<p>$post = &quot;username=***&amp;password=***&amp;loginCode=$code&quot;;<br />
$curl = curl_init();<br />
curl_setopt($curl, CURLOPT_URL, $login_url);<br />
curl_setopt($curl, CURLOPT_HEADER, false);<br />
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);<br />
curl_setopt($curl, CURLOPT_POSTFIELDS, $post);<br />
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);//使用储存cookie的文件<br />
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_file); //获取COOKIE并存储<br />
$result=curl_exec($curl);<br />
curl_close($curl);</p>
<p>$result = json_decode($result,true);<br />
if($result[‘err’] == 1){//OK,开始做你想做的事吧。。。。。<br />
//获取首页<br />
$curl = curl_init();<br />
curl_setopt($curl, CURLOPT_URL, ‘http://www.netljc.com/member/index/’);<br />
curl_setopt($curl, CURLOPT_HEADER, false);<br />
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);<br />
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);<br />
$result=curl_exec($curl);<br />
curl_close($curl);<br />
//这一块根据自己抓包获取到的网站上的数据来做判断<br />
print_r($result);exit;<br />
}else{<br />
echo ‘11111&lt;pre&gt;';print_r($result);exit;<br />
}</p>
<p>[/php]

js/jquery银行卡号每4个数字用空格分隔

$(‘#bankAccount’).keyup(function() {
$(this).val($(this).val().replace(/\D/g,”).replace(/(\d{4})(?=\d)/g,”$1 “));
});

php检查程序执行时间

$time1 = microtime(true);
// ... 执行代码 ...
$time2 = microtime(true);
echo '耗时'.round($time2-$time1,3).'秒';
程序说明:
microtime() 如果带个 true 参数, 返回的将是一个浮点类型. 这样 time1 和 time2 得到的就是两个浮点数, 相减之后得到之间的差. 由于浮点的位数很长, 或者说不确定, 所以再用个 round() 取出小数点后 3 位. 这样就是我们需要的结果了。

windows开机自动启动redis隐藏cmd窗口

新建一个start.bat文件
内容:

D:
cd D:\netljc\redis-2.4.5
redis-server.exe redis.conf

注意:这里的路径是你redis所存放的路径

再建一个redis.vbs文件
内容:
createobject(“wscript.shell”).run “D:\netljc\redis-2.4.5\start.bat”,0

最后将redis.vbs放在window启动项里面,双击这个文件就可以了
完成~!