PHP基础学习

什么是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中取出文件扩展名
$url="http://www.baidu.com/ces.php?id=1";
$arr=parseurl($url);
$pathArr=pathinfo(arr['path']);
print($pathArr['extension']);
 
 
不定长参数控制 
  1. function myfun() {  
  2. $numargs = func_num_args();  
  3. echo "参数个数: $numargs\n";  
  4. $args = func_get_args();//获得传入的所有参数的数组  
  5. var_export($args);  
 
全局变量 在函数中使用需要带 global
<?php
$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();
?>
 
 
php的垃圾回收机制  引用计数  周期回收
 
 
mysql 表存储引擎
 
MyISAM
 
它不支持事务,也不支持外键,尤其是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表。
是表级锁 而innoDB是行级锁
但是目前为止 MyISAM相对于 innoDB来说没有啥优势可言
InnoDB
InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比MyISAM的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。
自动增长列:
  
InnoDB表的自动增长列可以手工插入,但是插入的如果是空或0,则实际插入到则是自动增长后到值。
外键约束:
  
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)  cab字段的组合索引

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 
 
 
 
 

 

posted on 2017-05-09 11:28  轻浮不韪  阅读(103)  评论(0编辑  收藏  举报