• PHP基础笔记


    [PHP常用的代码]

    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模块可以提高网页浏览速度
     
    [优化网站响应时间]
    • 减少HTTP请求。例如:合并JS和CSS文件,利用浏览器的Cache功能避免下载相同的文件
    • 不长修改的动态内容静态化
    • 优化数据库
    • 使用负载均衡,例如HTTP重定向、反向代理服务器
    • 使用缓存,例如memcached和redis
     
    [常用的字符串函数]
    * 转换字母大小写: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,进行验证用户信息,实现共享。
  • 相关阅读:
    LAMP环境搭建
    Httpd
    MySQL常用配置和性能压力测试:MySQL系列之十五
    MySQL的高可用实现:MySQL系列之十四
    MySQL的复制:MySQL系列之十三
    备份与恢复:MySQL系列之十二
    日志记录:MySQL系列之十一
    事务隔离实现并发控制:MySQL系列之十
    SpringMVC上传文件(图片)并保存到本地
    W10如何开启LinuxBash及安装Ubuntu
  • 原文地址:https://www.cnblogs.com/rxbook/p/10912942.html
Copyright © 2020-2023  润新知