一、include、require、include_once和require_once的释义
1、include 引入文件一般在程序中用到的时候引入,遇到错误时会,会给出一个 warning,但脚本会继续执行 会重复引入
2、include_once 引入文件一般在程序中用到的时候引入,遇到错误时会,会给出一个 warning,但脚本会继续执行 不会重复引入
3、require 在文件头部引入 遇到错误的时候;会报出一个fatal error.脚本停止执行 会重复引入
4、require_once 在文件头部引入 遇到错误的时候;会报出一个fatal error.脚本停止执行 不会重复引入
建议一般选择require_once和include_once引入
二、内存管理
内存管理主要是指程序运行时对计算机内存资源的分配、使用和释放等技术,内存管理的目标是高效、快速地分配内存同时及时地释放和回收内存资源。内存管理主要包括是否有足够的内存供程序使用,从内存池中获取可用内存,使用后及时销毁并重新分配给其他程序使用。
在PHP开发过程中,如果遇到大数组等操作,那么可能会造成内存溢出等问题。一些常见的处理方法如下:
1)通过ini_set('memory_limit','64M')方法重置php可以使用的内存大小,一般在远程主机上是不能修改php.ini文件的,只能通过程序设置。注:在safe_mode(安全模式)下,ini_set会失效。
2)另一方面可以对数组进行分批处理,及时销毁无用的变量,尽量减少静态变量的使用,在需要数据重用时,可以考虑使用引用(&)。同时对于数据库、文件操作完要及时关闭,对象使用完要及时调用析构函数等。
3)及时使用unset()函数释放变量,使用时需要注意以下两点:
① unset()函数只能在变量值占用内存空间超过256字节时才会释放内存空间。
② 只有当指向该变量的所有变量都销毁后,才能成功释放内存。
三、 说说对SQL语句优化有哪些方法?(选择几条)
(1)Where子句中:where表之间的连接必须写在其他Where条件之前,那些可以过滤掉最大数量记录的条件必须写在Where子句的末尾.HAVING最后。
(2)用EXISTS替代IN、用NOT EXISTS替代NOT IN。
(3) 避免在索引列上使用计算
(4)避免在索引列上使用IS NULL和IS NOT NULL
(5)对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
(6)应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描
(7)应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描
4、图片防盗链
白名单 如红色的区域 其他的域名不能直接访问网址的图片
四、海量日志文件的存放
(1)如每天入库的数据量特大,可以考虑按照月去存表
(2)日志可以不放在数据库里加重服务器负担,可放在redis,消息队列(kafka)、ELC。目前链家就用的后两个。
mysql的存储引擎以及比较。聚合索引以及非聚合索引的底层数据结构(B+树,前者叶子结点存放实际数据,后者叶子结点存放实际数据的地址)
五、如何提高web server性能
===========================
新浪
主要是高并发的处理比较多,新浪看点做公众号,每天数据库要插入20万到40万条数据。
mysql如何查询优化
1、数据库查询分页,perpage和page
2、查询分页当(limit 40万,200)遍历前40万也会超慢,这时候可以采用切片来查
select min, max(id) 然后计算分成若干片,每片的起始id和技术id可以算出来,然后放每片放缓存中。
---------------------
作者:筑梦悠然
来源:CSDN
原文:https://blog.csdn.net/wuhuagu_wuhuaguo/article/details/79725234
六、php打印前一天的时间 格式为 **** ˉ ** ˉ ** **:**:**
echo date('Y-m-d H:i:s',strtotime('-1 days'));
七、添加一条作业crontab,每月1日,16点执行一次,记录日志
在linux下编辑一条定时任务
crontab -e
0 16 1 * * curl http://www.baidu.com/index.php/log/recordLog.php
分 时 日 月 星期 要运行的命令
八、用php验证手机号码的正确性
2种方式,php和javascript
php
$phonenumber = '13712345678';
if(preg_match("/^1[3|4|5|7|8]\d{9}$/",$phonenumber)){
echo "是手机号码";
}else{
echo "不是手机号码";
}
javascript