什么是php
Hypertext preprocessor 是一种用来开发动态网站的服务器脚本语言
显示客户端和服务器端IP
echo $_SERVER['REMOTE_ADDR'] // 客户端
echo $_SERVER['SERVER_ADDR'] //服务器端
php 需要开启短标签才能使用短标签(<? ?>) short_open_tag = on
get的最大数据提交量为1024个字符 但是 POST最大是2M且能够通过配置来调节
php打印前一天的日期并格式化
$a=date("Y-m-d H:i:s",strtotime("-1 day"));
print_r($a);
include 和require的区别
在失败的时候,include产生一个warning 而require产生错误并中断
require在运行前载入
include在运行时载入
为了避免多次包含同一个文件,产生错误 使用 require_once 和include_once
修改SESSION的生存时间
session_set_cookie_params
打开文件并进行读写
f_open函数
取得查询结果集总数
mysql_num_rows
explode() 和implode()函数
explode(':','a:b') // 将a:b用 :分割得到数组
implode(':',arr) //讲数组使用:拼接得到字符串
从标准url中取出文件扩展名
$arr=parseurl($url);
$pathArr=pathinfo(arr['path']);
print($pathArr['extension']);
不定长参数控制
- function myfun() {
- $numargs = func_num_args();
- echo "参数个数: $numargs\n";
- $args = func_get_args();//获得传入的所有参数的数组
- var_export($args);
- }
全局变量 在函数中使用需要带 global
<?php
$a = 1 ;
$b = 2 ;
function Sum ()
{
global $a , $b ;
$b = $a + $b ;
}
Sum ();
echo $b ;
?>
$a = 1 ;
$b = 2 ;
function Sum ()
{
global $a , $b ;
$b = $a + $b ;
}
Sum ();
echo $b ;
?>
将输出三
定义常量
define
(
"CONSTANT"
,
"Hello world."
);
const
CONSTANT="Hello world.";
常量是没有$的。
自动加载对象 程序使用未定义的类时,会被自动加载
<?php
function __autoload ( $class_name ) {
require_once $class_name . '.php' ;
}
$obj = new MyClass1 ();
$obj2 = new MyClass2 ();
?>
function __autoload ( $class_name ) {
require_once $class_name . '.php' ;
}
$obj = new MyClass1 ();
$obj2 = new MyClass2 ();
?>
php的垃圾回收机制 引用计数 周期回收
mysql 表存储引擎
MyISAM
它不支持事务,也不支持外键,尤其是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表。
是表级锁 而innoDB是行级锁
但是目前为止
MyISAM相对于
innoDB来说没有啥优势可言
InnoDB
InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比MyISAM的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。
自动增长列:
InnoDB表的自动增长列可以手工插入,但是插入的如果是空或0,则实际插入到则是自动增长后到值。
InnoDB表的自动增长列可以手工插入,但是插入的如果是空或0,则实际插入到则是自动增长后到值。
外键约束:
MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引。
MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引。
MEMORY
memory使用存在内存中的内容来创建表。每个MEMORY表实际对应一个磁盘文件,格式是.frm。MEMORY类型的表访问非常快,因为它到数据是放在内存中的,并且默认使用HASH索引,但是一旦服务器关闭,表中的数据就会丢失,但表还会继续存在。
MERGE
merge存储引擎是一组MyISAM表的组合,这些MyISAM表结构必须完全相同,MERGE表中并没有数据,对MERGE类型的表可以进行查询、更新、删除的操作,这些操作实际上是对内部的MyISAM表进行操作。
表级锁 开销小,
行级锁 开销大,但是并发控制更好
事务
ACID
A---atomicity(原子性) 一个事务是最小的工作单元
C---Consistency(一致性)
I---Isolation(隔离性) 多个事务是相互隔离的, 隔离级别
D---durability(持久性) 事务提交后不可恢复
组合索引要有个最左前缀原则
如 index c(a,b) c为a和b字段的组合索引
where a=1 and b=1 或者 where a=1 可以到索引
而 where b=1 索引不起作用
php-fpm php进程管理器 可以有效的控制php内存进程 并且支持平滑重启
使用 php-fpm 控制 php-cgi的 fastCGI的进程
php-CGI 全称 公共网关接口 http服务器与你的或其他机器上的程序进行 交谈 的一种工具 其程序须运行在服务器上
CGI 可以用任何一种语言编写,只要它具有标准输入输出 和环境变量
FastCGI 是web服务器启动时加载的进程管理器
php-cgi是其中的一种 ,不支持平滑重启
http错误码
2 成功 3 重定向 4 请求错误 5 服务器错误
200 成功 400 服务器出错 401 请求的用户需要验证身份 403 请求拒绝 404 请求失败,服务器没有该文件 502 网关失败 503 服务器过载,无法处理该请求 504 超时
redis 在命令行中无法使用 可能是命令行加载的php.ini和网站上的php.ini不是同一个。。我晕
redis 的持久化方案
快照的方式
将内存中的数据以快照的方式写入二进制文件中 可以在服务端配置 多长时间去写入超过多少key的时候写入 写入是完整写入的,不是做增量
aof持久化 Append-only file 启用方式 appendonly yes 配置文件
redis 只要收到一次命令就会通过write函数将数据追加到磁盘文件中
虚拟内存方式(desprecated)
diskstore方式
利用b+tree来实现
redis 支持的数据类型 String Hash List Set(会对list进行自动排重) Sort Set 可以通过用户给的优先级参数进行排序 插入有序 自动排序
break 2 指跳出几层循环继续运行
查看当前运行的sql
select * from information_schema.`PROCESSLIST` where INFO is not null;
mysql 命令导出mysql数据
mysqldump -uroot -pmysql databasefoo(数据库名) table1 table2 > foo.sql