[PHP经常使用的代码]html
date_default_timezone_set(PRC); //时区设置
header("Content-type: text/html; charset=utf-8");
error_reporting(E_ALL & ~E_DEPRECATED & ~E_NOTICE & ~E_WARNING);
ini_set ('memory_limit', '1280M');
[HTML经常使用代码]
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta charset="UTF-8">
<meta http-equiv ="refresh" content ="60"> #定时刷新页面
body{-webkit-user-select:none;} #CSS控制页面文字不能复制
PHP的垃圾回收机制(GC机制):PHP能够自动进行内存管理,清除再也不须要的对象。PHP使用了引用计数这种单纯的垃圾回收机制。每一个对象都内含一个引用计数器,每一个reference连接到对象,计数器加1,当reference离开生存空间或者被设为null,计数器减1,当某个引用计数器的对象为0时,PHP知道你将再也不须要使用这个对象,释放其所占有的内存空间。
1.PHP 语法错误 和 语义错误 的区别:
语法错误 经过IDE均可以提示看到:如缺乏分号,未声明的变量,不匹配的括号或大括号,和未终止字符串;
语义错误 通常是逻辑上的错误,例如:除以0。
2.函数名不区分大小写,变量区分大小写。
3.检测变量类型:
is_bool(),is_string(),is_float(),is_array(),is_object()。
4.检测是否存在:
file_exists(),class_exists(),property_exists()
5.将stdclass object转换为数组:
get_object_vars($test);
7.require/include遇到即包含文件,require_once/include_once只包含一次。
require/require_once遇到错误会终止,通常放在程序的最前面;
include/include_once遇到错误会继续执行,通常放在流程控制语句中。
8.session_start()函数前面若是须要有输出:
ob_start();session_start();$_SESSION[user]=1;ob_end_flush();
9.使用empty(),对于""、0、"0"、NULL、FALSE、array() 都认为是空的。
10.parse_url : 解析URL,返回其组成部分
11.http_build_query() : 生成 url_encode 以后的请求字符串
12.usleep 微秒,sleep 秒:sleep(2) = 2秒。
13.获取图片尺寸:getimagesize("1.jpg");
14.页面js调试:
console.info(“输出info”); console.warn(“输出警告”); console.error(“输出错误”);
15.PHP中的错误级别:
Deprecated/Notice/Warning/Fatal error/Parse error(最高级别的错误,语法解析错误);
16.屏蔽错误输出:
error_reporting(E_ALL & ~E_DEPRECATED & ~E_NOTICE & ~E_WARNING);
17.代码调试:
debug_backtrace(); 实参个数:
func_num_args(); 返回某一个实参:
func_get_args();
18.将数组结果以字符串的形式输出(能够直接将数组的结果以字符串的形式写入日志):
echo print_r($arr,1); 或者 echo var_export($arr,1);
1.七种布尔false:0,0.0,'','0',false,array(),NULL。注意,字符串的'false'的布尔值是 true
2.遍历数组的三种方式和区别:
(1)for循环:只能遍历数字索引。
(2)foreach循环:能够遍历数字索引和关联索引,而且会对数组进行reset()操做
(3)while、list()、each()组合循环:能够遍历数字索引和关联索引,可是不会对数组进行reset()操做
3.continue 2 表示跳出外面第2层循环,其余数字同理。
4.全局变量:把外部的全局变量用于函数内部,在内部的变量使用global $a,或者$GLOBALS['a']
5.静态变量:仅在局部函数域中存在,但当程序执行离开此做用域时,其值并不会消失(不会释放内存),使用 static $a
说明:仅初始化一次;初始化时须要赋值;每次执行函数该值会保留; static修饰的变量是局部的,仅在函数内部有效;
能够记录函数的调用次数,从而能够在某些条件下终止递归。
isset和empty
isset用来判断变量是否存在;empty用来判断变量是否有值。
$a不存在和$a = null 两种状况在isset看来为true,其他为false(包括$a = ‘’;)
$a = null, 0, false, ‘ ’, 或不存在时在empty看来为true,其他为false。
PHP操做MySQL:
mysqli_connect();
mysqli_query();
mysqli_close();
mysqli_fetch_array();
mysqli_fetch_assoc();
mysqli_fetch_object();
mysqli_num_rows()
[提升PHP性能的方法]
-
把类定义成static
-
echo比print快
-
使用函数代替正则
-
不要滥用@操做符
-
循环内部不要声明变量
-
echo用逗号链接字符串效率高
-
多维数组尽可能不要循环嵌套赋值
-
用全等号代替双等,减小类型转换
-
不须要的数组或数据及时unset掉
-
尽可能少用全局变量和对象属性($this->num++)
-
使用ip2long()和long2ip()把IP地址转成整型
-
require比require_once()快,而且尽可能不要使用相对路径
-
字符串用单引号而不是双引号,由于双引号里面会判断是否有变量
-
打开apache的mod_deflate模块能够提升网页浏览速度
[优化网站响应时间]
[经常使用的字符串函数]
* 转换字母大小写:strtolower()所有小写、strtoupper()所有大写、ucwords()首字符转换为大写
* 计算长度:strlen($str); substr_count($str,子字符串);str_word_count($str);//共有多少个单词
* 查找子字符串第一次出现后的全部内容:strstr($str,子字符串); 忽略大小写用stristr();
* 查找子字符串第一次出现的位置数值:strpos($str,子字符串); 忽略大小写用stripos();
* 复制字符串:str_repeat($str,复制多少次);
* 反转字符串:strrev($str);
* 替换字符串:str_replace($old,$new,$str); substr_replace($str,替换的字串,开始替换的位置 [,替换多少个字符]);
* 分割英文字符串为等长度元素的数组:str_split($str[,分割后的数组的每一个元素的长度 默认1]);
* 分割中文字符串为等长度元素的数组:preg_split('/(?<!^)(?!$)/u', $str);
* 比较字符串大小:strcmp($str1,$str2); strncmp($str1,$str2,比较多少个字符);
[经常使用的数组函数]
数组排序
sort()低到高,rsort()高到低。
保持键值对应关系使用 asort()和arsort()。
对键排序ksort()和krsort()。随机排序 shuffle()。
数组key相关
array_keys() 返回数组中全部的键名
array_values() 返回数组中全部的值,key从0开始。
array_key_exist() 判断一个数组中是否包含指定的键名
数组value相关
array_push($arr,‘newValue’); 在数组结尾插入一个或多个元素
array_unshift() 在数组开头插入一个或多个元素。
array_shift() 删除数组中的第一个元素,并返回被删除元素的值。
array_rand(array,number); 从数组中随机选出一个或多个元素,并返回。
range(min,max [,step默认是1]); 快速建立具备连续数值的数组
array_pop():获取数组中最后一个元素。
array_unique():删除数组中的重复元素。
array_slice(array,offset,length) 在数组中根据条件取出一段值,并返回。
get_object_vars($obj); 将stdclass object对象转换为数组
合并和拆分
array_merge($arr1, $arr2,...) 和 array_combine(); 合并多个数组
array_chunk(数组,结果数组的元素个数 [,bool键名是否保持]); 将一个数组分割成多个数组
回调函数
array_filter() 用回调函数过滤数组中的单元
array_walk() 数组中的每一个成员应用用户函数
array_map() 将回调函数做用到给定数组的单元上
计算和判断
count() 函数,后面加上COUNT_RECURSIVE或者true,能够统计多维数组的全部节点的个数。
in_array() 判断某元素是否在数组中。
array_sum($arr); 计算数组元素的和
array_count_values() 统计数组中全部值出现的次数。
array_intersect(array1,array2,[array3...]); 计算数组的交集。
array_diff(); 计算数组的差集
array_reverse($arr); 翻转数组
array_flip($arr); 对调数组的键和值
[PHP的运行原理]
CGI:PHP解析器与webserver的一个协议桥梁。
FastCGI:每次处理完请求后不会kill掉进程,会保留进程。属于CGI的改良版本。
PHP-FPM:PHP FastCGI Process Manager,PHP FastCGI的进程管理器。
[PHP常见配置项]
register_globals:注入变量,打开后各类变量都会被注入,不安全,建议关闭。
allow_url_fopen:是否容许打开远程文件
allow_url_include:是否容许远程包含文件
date.timezone:设置时区
display_errors:是否显示错误
error_reporting:错误级别设置
safe_mode:安全模式
upload_max_filesize:上传最大文件的大小
max_file_uploads:上传的最大文件数量
post_max_size:提交的POST数据的最大大小
Session 共享(单点登陆)
利用Redis实现简单的Session共享:
用户第一次进入商城首页,给一个CSESSIONID,(不用JSESSIONID的缘由),用户添加商品,各类须要记录的操做,都与这个CSESSIONID关联起来;
当使用登陆操做时候,将这个用户的信息,如用户名等存入到redis中,经过K_V,将CSESSIONID加一个标志做为key,将用户信息做为value;
当用户点击页面被转发到其余服务器时候,在须要验证是否同一个用户时,就能够从redis中取出value,进行验证用户信息,实现共享。