: jank : : 4873 : 2016-09-27 08:15 php
2016 6/20
一. mysql 添加索引:
1. alter table name add primary_key(`primary_key_name`);
2. alter table name add unique(`unique_name`);
3. alter table name add index(`index_name`);
二. mysql 删除索引:
1. alter table name drop key column_name;
三. mysql 修改表名
1. rename table oldname to newname;
2016 6/21
一. 几个数组函数
array_push(array, date);//注意这个函数结果就是括号里的array,不能赋值
range(1, 100); //从一到一百的数组
shuffle(array); //把数组打成乱序,不能赋值
array_slice(array, 0, 1); //从数组中截取一个数值。
2016 6/22
一. 服务器
1.reboot 重启服务器
2.nginx 路径 -s reload 重启nginx
3.nginx 路径 -s stop 关闭nginx
4.php-fmp路径 restart 重启 php
5.给执行权限 chmod O+x 文件名
6.开启mysql /bin/systemctl start mysqld.service
7.svnserve -d -r ./svn 开启svn服务
2016 6/23
微信支付完成实现自动关注 增加 is_subscribe 字段
从服务器导出数据库: mysqldump -u root -p guanjian > /home/www/guanjian.sql 回车输入密码
从服务器导出数据表: mysqldump -u root -p guanjian gj_yhq > /home/www/gj_yhq.sql 回车输入密码
从服务器导出表字段: mysqldump -u root -p guanjian gj_paimai where jiang=1 > /mnt/gj_paimai.sql 回车输入密码
从服务器导入数据库表:进入mysql,直接source sql文件路径自动导入
創建數據庫默認字符集: CREATE DATABASE db_name DEFAULT CHARACTER SET utf8;
数据库表重命名:
2016 6/27
1.查看linux服务器所有信息 lsb_release -a
2016 6/28
1.var_dump('a'>0); 打印出bool值true or false print_r() echo 打印空
2.$str='abc#defg';
$in=strstr($str,'#d');//输出结果为:#defg,从某个字符开始截取
stristr和strstr效果一样,只是stristr不区分大小写
$in=substr($str, 1,2);//截取
var_dump(strpos($str,'ab'));//返回bool值,
3. sort()函数对索引数组,键从0,1,2开始排列
2016 6/29
1.decbin() 函数把十进制转换为二进制。
2016 6/30
1.tp框架中vendor()函数,Thinkphp/Library/Vendor存放第三方类库
2.simplexml_load_string() 函数把 XML 字符串载入对象 可以通过json_decode(json_encode())来转换成数组
3.文件操作
fopen()
'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'a' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
4. $_SERVER[HTTP_USER_AGENT]; //获取用户客户端基本信息
5. $_SERVER['REQUEST_URL']; //获取当前页面url
6. session('?openid'); //thinkphp中判断是否存在名字为openid的session
2016 7/1
1. strtotime();//将英文时间转换成时间戳,strtotime("+1 hours +1 week 3 days 7 hours 5 seconds"); strtotime('next day'); strtotime("3 October 2005")
2. (.*?) //正则最少匹配 " = "''" > = '>' < = '<' & = '&' = '' /s 单行模式匹配
3. str_repeat($str, 2);//字符串重复指定两次
4.商品上线多少天
$mall['onsaledate'] = time();
$mall['onsaleday'] = 1;
$saleend = strtotime(date('Ymd', $mall['onsaledate'])) + $mall['onsaleday'] * 86400;
echo date('Y/m/d H:i:s', $saleend) . ',';
echo $saleend;
2016 7/4
1.mysql操作
如果出现类似'Access denied for user 'root'@'localhost' (using password: NO)'错误
则,在mysql配置文件'/etc/my.cnf'中加入skip-grant-tables 字段。然后保存重启mysql: 'service mysqld restart'
或者 '/etc/rc.d/init.d/mysqld restart'。直接mysql -u root -p 回车进入mysql修改mysql数据库中的user表的password
注:修改时得用password()函数。改完后则回到my.cnf文件中,去除刚加入的字段,保存重启,重新登录mysql。
2.查看linux服务器所有运行的服务进程: ps aux|less
3.判断tp中mysql是否修改成功if($result != false) 或者 if($result === 0 || $result > 0)
2016 7/5
1.thinkphp中统计单个字段的和用sum()函数
2.跳转页面总结:首先判断这个值是否正确,然后查找数据库判断
3.使用redirect(U("Home/User/supgetmoney/uid/$uid"), 3, '余额不足,3秒后自动返回提现页面...');进行3秒后重定向。
2016 7/8
1.如果安装mysql时没有设置自动开启mysql,则每次重启服务器时就需要service mysqld start开启mysql
2.在linux环境下,当执行php命令时报convert: command not found错误时,说明在/etc/profile文件中没有把php的bin路径
加在path中
2016 7/11
1.
命令:curl 可以访问url
在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。
它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具。
2016 7/12
1.quickstart guide 快速入门指南
2.migrations 迁移
3.eloquent 有说服力的
4.Blade 刀
5.templates 模板
6.track 轨道,路线,跟踪,检测
7.1024端口 是 *UNIX 系统动态端口的开始,是我们不需要 root 权限就可以随意监听的数值最小的端口。
8.ORM 對象關係映射 是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。
9.syntax error 語法錯誤
2016 7/15
1.赋予root权限
方法一:修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
然后修改用户,使其属于root组(wheel),命令如下:
#usermod -g root jank
2016 7/19
1.svn使用
首先yum -y install subversion
make /home/svn
svnadmin create /home/svn/blog
编辑 /svn/blog/conf/auth,passd,ser..三个文件 注:修改配置文件时头部不能有空格
在hooks中添加钩子文件post-commit,指定好svn目录 并赋予root执行权限
在指定的目录的上一层svn checkout svn://www.jankl.com/blog
修改blog为指定的目录名
服务器常用命令有
svn add 文件/文件夹名
svn commit -m jank(随便输入,应对有时直接suv commit报错)
svn update
svn del
svn revert 有时候svn add 后源文件被找不到会报错,解决方法是:
svn revert 删除的文件/文件夹名 --depth infinity
2.redis连接:$redis = new Redis(); $redis->connect('0.0.0.0', 6379);
3.pdo
连接:
$pdo = new PDO('mysql:host=127.0.0.1;dbname=blog', 'root', 'jank');
设置编码:
$pdo->query('set names utf8');
PDO::FETCH_ASSOC-- 关联数组形式
PDO::FETCH_NUM -- 数字索引数组形式
PDO::FETCH_BOTH -- 两者数组形式都有,这是缺省的
PDO::FETCH_OBJ -- 按照对象的形式,类似于以前的mysql_fetch_object()
2016 7/21
linux chown更改文件所有权 chown(filename, user);
chown -R jank:phpgroup blog 修改blog目录及其所有文件的归属权为phpgroup组的jank所有
创建用户:
1.# useradd –d /usr/sam -m sam
此命令创建了一个用户sam。
2.# useradd -s /bin/sh -g group –G adm,root gem
此命令新建了一个用户gem,该用户的登录Shell是/bin/sh,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。
这里可能新建组:#groupadd group及groupadd adm
增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。
Linux提供了集成的系统管理工具userconf,它可以用来对用户账号进行统一管理。
用户添加组:
将一个用户添加到用户组中,千万不能直接用:
usermod -G groupA
这样做会使你离开其他用户组,仅仅做为 这个用户组 groupA 的成员。
应该用 加上 -a 选项:
usermod -a -G groupA user
(FC4: usermod -G groupA,groupB,groupC user)
-a 代表 append, 也就是 将自己添加到 用户组groupA 中,而不必离开 其他用户组。
2016 7/27
1.冒泡排序:
设置两个for循环,
里面一个循环就是拿出第一个数一次跟后面的数进行比较,遇到比自己大的就替换掉继续比较直到最后一个数,
外面的循环为的是让上一次排好顺序的序列,和上一次一样再来走一遍,走的遍数等于数组的长度。
sort() - 以升序对数组排序
rsort() - 以降序对数组排序
asort() - 根据值,以升序对关联数组进行排序
ksort() - 根据键,以升序对关联数组进行排序
arsort() - 根据值,以降序对关联数组进行排序
krsort() - 根据键,以降序对关联数组进行排序
array_multisort()函數把多維數組進行排序或者多个数组进行排序,所得结果无需赋予变量
例:array_multisort($num1, SORT_ASC, $num2, SORT_DESC);//对$num1进行升序,$num2进行降序
2.array_column($user, 'name');//把二维数组转换成一维数组,结果需要赋予变量
3.php -m 查看已经安装好的php扩展库
4.php7所有对字符串进行的函数操作都必须加上mb_
2016 7/28
1.scws 中文分词php扩展,函数调用方法
$so = scws_new();
$so->set_charset('utf8');
// 这里没有调用 set_dict 和 set_rule 系统会自动试调用 ini 中指定路径下的词典和规则文件
$so->send_text("我是一个中国人,我会php语言,我也有很多T恤衣服");
while ($tmp = $so->get_result())
{
$jank = array_column($tmp, 'word');
}
print_r($jank);
$so->close();
2.array_filter($arr);//删除数组中的空元素
3.array_unique($arr);//去除数组中重复的元素
2016 7/29
1.array_slice($arr, 0, 8);//数组截取函数,数组长度不够不报错,截取的结果须赋给一个变量
2016 8/1
git 版本控制器学习
1.首先使用yum安装好git:yum install git
2.新建一个文件夹gitdir,进入文件夹gitdir执行命令:git init即生成版本仓库,当前系统第一次使用
需要登录名:git config --global user.name 姓名
登录邮箱: git config --global user.email 邮箱地址
3.本地的仓库基本命令
git add filename
git rm filename
git mv filename new.filename
git commit -m 描述
4.注册github中国版
网址:https://git.oschina.net
然后创建一个项目如地址:https://git.oschina.net/jank1369/ceshi.git
5.克隆远程目录文件
git clone https://git.oschina.net/jank1369/ceshi.git
6.版本库远程操作
git remote add origin(远程库名) https://git.oschina.net/jank1369/ceshi 添加远程库
git remote remove origin(远程库名)
git pull origin master 更新本地
git push origin master 提交至远程
2016 8/4
1.mb_substr_count($user['fans'], ',') + 1;//截取粉色的个数
2.$str = str_split($str);//字符串转数组
2016 8/8
1.form 表单提交post数据,页面跳转
ajax 在当前页面提交后台函数,获取回调信息,但还是在本页面
2.mysql修改字段名称change并重新输入字段信息,modify主要用来修改字段信息
2016 8/9
1.mysql添加unique或者primary 索引的时候注意如果表中有字段需要为其先赋上不同的值,才能添加成功
2016 8/10
1.删除数组中的指定元素:
例:
$arr = array(1,3,5,23,15);//删除键值5
$key = array_search(5, $arr); // 一,先找到键值5所在数组$arr中的位置
if($key != false)
array_splice($arr, $key, 1);// 二,删除$key的键值
2.数组键值反转函数:array_flip(trans);
2016 8/11
1.mysql 删除数据库的unique索引,同删除index索引方法一样。
2016 8/12
1.foreach循环中给键值重新赋值要注意:
例:
$arr = array(array('name' => 'jank'),array('name' => 'ai'));
foreach($arr as $k => $v){
$arr[$k]['name'] = '占魁';
}
而不是:$v['name'] = '占魁';
2.后台传json值给前台模板是json值不能为空
3.thinkphp模板输出
<foreach name="jank" item="j" key="k"></foreach> 一维数组键{$k} 值{$j}
<volist name="jank" id=""></volist>
<empty> <else /> </empty>
<notempty> </notempty>
<present></present>
<if condition="$jank eq 1"> <else /> </if>
<eq name="jank" value="1"> <else /> </eq>
2016 8/13
1.url重写
2016 8/18
1.ci框架
配置框架:把index.php放在根目录后需要更改index.php文件中system和application的路径
配置database:打开config目录中的database.php更改其中的配置
注:如果之前php.ini文件中是pdo_mysql.default_socket=
修改:等号后面添加mysql.sock文件的路径
2016 8/21
1. 1s=1000ms
2016 8/25
1.当重启nginx时出现"nginx: [error] open() "/usr/local/nginx/logs/nginx.pid"
failed (2: No such file or directory"错误时,
解决方案:执行命令 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
2016 8/26
1.apache编译安装参数说明
./configure //配置源代码树
--prefix=/usr/local/apache2 //体系无关文件的顶级安装目录prefix ,也就apache的安装目录。如果没有指定PREFIX,默认会装到/usr/local/apache2。
--enable-module=so //打开 so 模块,so 模块是用来提 dso 支持的 apache 核心模块
--enable-deflate=shared //支持网页压缩
--enable-expires=shared //支持 http 控制
--enable-rewrite=shared //支持 url 重写
--enable-cache //支持缓存
--enable-file-cache //支持文件缓存
--enable-mem-cache //支持记忆缓存
--enable-disk-cache //支持磁盘缓存
--enable-static-support //支持静态连接(默认为动态连接)
--enable-static-htpasswd //使用静态连接编译 htpasswd - 管理用于基本认证的用户文件
--enable-static-htdigest //使用静态连接编译 htdigest - 管理用于摘要认证的用户文件
--enable-static-rotatelogs //使用静态连接编译 rotatelogs - 滚动 apache 日志的管道日志程序
--enable-static-logresolve //使用静态连接编译 logresolve - 解析 apache 日志中的ip地址为主机名
--enable-static-htdbm //使用静态连接编译 htdbm - 操作 dbm 密码数据库
--enable-static-ab //使用静态连接编译 ab - apache http 服务器性能测试工具
--enable-static-checkgid //使用静态连接编译 checkgid
--disable-cgid //禁止用一个外部 cgi 守护进程执行cgi脚本
--disable-cgi //禁止编译 cgi 版本的 PHP
--disable-userdir //禁止用户从自己的主目录中提供页面
--with-mpm=worker // 让apache以worker方式运行
--enable-authn-dbm=shared // 对动态数据库进行操作。rewrite时需要。
/usr/local/apache/bin/apachectl -m =-t -d dump_modules 安装了哪些模块
/usr/local/apache/bin/apachectl -t 测试安装是否成功
/usr/local/apache/bin/apachectl -k start|restart|stop 查看具体
./configure --prefix=/usr/local/apache --enable-module=so
--enable-deflate=shared --enable-expires=shared
--enable-rewrite=shared --enable-cache --enable-file-cache
--enable-mem-cache --enable-disk-cache --enable-static-rotatelogs
--enable-static-logresolve --enable-authn-dbm=shared --enable-so
AddType application/x-httpd-php .php .php3 .phtml .inc
AddType application/x-httpd-php-source .phps
2016 08/30
一、linux下安装ftp
1.首先判断当前系统下是否已安装ftp:rpm -qa|grep vsftpd
如果返回结果为空则说明没有安装。
2.安装:yum -y install vsftpd
2016 09/05
1.
一月份=JAN. Jan.=January
二月份=FEB. Feb.=February
三月份=MAR. Mar.=March
四月份=APR. Apr.=April
五月份=MAY May=May
六月份=JUN. Jun.=June
七月份=JUL. Jul.=July
八月份=AUG. Aug.=August
九月份=SEP. Sept.=September
十月份=OCT. Oct.=October
十一月份=NOV. Nov.=November
十二月份=DEC. Dec.=December
2.'5' == 5 但不全等 '5' === 5 false
2016 09/06
1.80端口是web服务的标准端口,SMTP服务是25端口,FTP服务是21端口,等等。
端口号小于1024的是Internet标准服务的端口,端口号大于1024的,可以任意使用。
2016 09/13
1.utf8中文占 3 字节,英文数字 1 个字节
gbk中文占 2 字节
echo strlen('中国人'); //9
echo mb_strlen('中国人'); //9
echo mb_strlen('中国人', 'utf8'); //3
2.rmp -q -a 查看所有软件包
2016 10/13
1.修改PATH环境变量
vim /etc/profile //打开配置文件
export PATH=$PATH:/usr/local/go/bin
source /etc/profile //重启配置文件
2016 10/14
1.$a = 1; $a++是赋值后加1,echo $a++; 1。++$a是赋值前$a本身就加1了。echo ++$a; 2。
2.unset($arr['name'], $arr['age'], ...);//一次unset多個數組鍵值
2016 10/18
1.file函数
fopen(filename); 打开文件
filesize(filename);//获取文件内容总字节数
fread(filename, "设定查看的字节大小");
file_get_contents(filename);//读取整个文档的内容,file_get_contents(),它的性能比fread() 好得多。
fwrite(filename, 'a');//
file_put_contents(filename, str, FILE_APPEND);//向filename文件中写入字符串(append形式),效率更高
模式 描述
r only read 只读。在文件的开头开始。
r+ read/write 读/写。在文件的开头开始。
w only write 只写。打开并清空文件的内容;如果文件不存在,则创建新文件。
w+ read/write 读/写。打开并清空文件的内容;如果文件不存在,则创建新文件。
a and to 追加。打开并向文件文件的末端进行写操作,如果文件不存在,则创建新文件。
a+ read/and to 读/追加。通过向文件末端写内容,来保持文件内容。
x only write 只写。创建新文件。如果文件以存在,则返回 FALSE。
x+ read/write 读/写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。
2.flock()函数
要取得共享锁定(读取程序),将 operation 设为 LOCK_SH(PHP 4.0.1 以前的版本设置为 1)
要取得独占锁定(写入程序),将 operation 设为 LOCK_EX(PHP 4.0.1 以前的版本中设置为 2)
要释放锁定(无论共享或独占),将 operation 设为 LOCK_UN(PHP 4.0.1 以前的版本中设置为 3)
如果你不希望 flock() 在锁定时堵塞,则给 operation 加上 LOCK_NB(PHP 4.0.1 以前的版本中设置为 4)
例:
$file = "jank.txt";
$fp = fopen($file, 'a');
if(flock($fp, LOCK_EX)){
fwrite($fp, " 最美的太阳 ");
sleep(10);
flock($fp, LOCK_UN);
}
fclose($fp);
3.dirname()函数
__FILE__ 和 dirname() 函数从 PHP 4.0.2 就开始启用。
__DIR__ 变量则是 PHP5.3.0 新增的
在实现同样功能的情况下,dirname(__FILE__)多了一层函数调用。
所以, __DIR__ 比 dirname(__FILE__) 在效率上有优势。
例:
print_r(dirname(__DIR__)); C:wampwwwjank
print_r(dirname(__FILE__)); C:wampwwwjanksheel
print_r(__FILE__); C:wampwwwjanksheellockread.php
print_r(__DIR__); C:wampwwwjanksheel
4.sleep()函数
usleep() - 以指定的微秒数延迟执行
time_nanosleep — 延缓执行若干秒和纳秒
time_sleep_until() - 使脚本睡眠到指定的时间为止。
set_time_limit() - 设置脚本最大执行时间
sleep() - 延缓执行
2016/10/19
1.存储分隔字段
if($mall['biaolist'] != ''){
$list = explode(',', $mall['biaolist']);
if(!in_array($uid, $list))
array_push($list, $uid);
$list = implode(',', $list);
}else{
$list = $uid;
}
2016/10/20
1.定时任务
开启定时任务:crontab -e
重启定时任务:service crond restart
2016/10/21
1.设置字符串格式
$id = settype($_GET['id'], 'integer');
2.异常
异常的规则
1. 需要进行异常处理的代码应该放入 try 代码块内,以便捕获潜在的异常。
2. 每个 try 或 throw 代码块必须至少拥有一个对应的 catch 代码块。
3. 使用多个 catch 代码块可以捕获不同种类的异常。
4. 可以在 try 代码块内的 catch 代码块中再次抛出(re-thrown)异常。
注意:抛出的异常必须要捕获,否则将报错
2016/10/24
1.thinkphp 修改单个字段:
$result = $Dao->where('uid = 2')->setField('email','Jack@163.com');//修改单个字段
$User->where('id=5')->setInc('score',3); // 用户的积分加3
$User->where('id=5')->setInc('score'); // 用户的积分加1
$User->where('id=5')->setDec('score',5); // 用户的积分减5
$User->where('id=5')->setDec('score'); // 用户的积分减1
2016/10/28
1.for循环中赋值细节
$jank = array();
$arr = array(array(1,23,3),array(),array('jank','janks'));
foreach ($arr as $key => $value) {
$jank[$key] = $value;
if(empty($jank[$key])){
unset($jank[$key]);
continue; //continue的同时需把该键给删掉
}
}
echo '----------------------方法二(推荐)'. "<br/>";
foreach ($arr as $key => $value) {
$j = $value; //或者是通过赋值的方式来处理
if(empty($j)){
continue;
}
$json[] = $j;
}
2016/10/31
1. php绝对值: abs();
2. mysql 获取当前时间戳函数: unix_timestamp(now())
2016/11/04
1.配置$GOPATH :
vim /etc/profile
末尾添加:export GOPATH=/usr/local/go/bin
source /etc/
2016/11/07
1.thinkphp 拼接注意'{}'相当于'<?php ?>': var links = "{:C('IPROOT')}/mall/info/mid/{$info['mid']}"
2016/11/09
1.cookie
cookie是有时间限制的,根据生命期不同分成两种:会话cookie和持久cookie;
如果不设置过期时间,则表示这个cookie生命周期为从创建到浏览器关闭止,只要关闭浏览器窗口,cookie就消失了。这种生命期为浏览会话期的cookie被称为会话cookie。会话cookie一般不保存在硬盘上而是保存在内存里。
如果设置了过期时间(setMaxAge(606024)),浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存的cookie,不同的浏览器有不同的处理方式。