多数大学生出来选择的工作和专业无关
首页 > 专业知识

PHP程序员的优化调试技术和技巧

时间:2018-02-28 17:08:14 [来源]:郑州PHP培训学校

   PHP程序员的优化调试技术和技巧

  1、变量、数组的应用技巧
  (1)很多人用得不多的数组函数。foreach、list、each。分别举几个例子,应该就能知道了。例:
  $data = array('a' => 'data1', 'b' => 'data2', 'c' => 'data3');while(list($subscript, $value) = each($data)){
  echo "$subscript => $value :: ";
  echo "$subscript => $valuen
  ";
  }
  reset($data);
  foreach($data as $subscript => $value)
  {
  echo "$subscript => $value :: ";
  echo "$subscript => $valuen
  ";
  }
  (2)函数的变量、变量的变量、变量的“指针”:看下例:
  //变量的变量
  $var = "this is a var";
  $varname = "var";
  echo $$varname;
  //函数的变量
  function fun1($str) {
  echo $str;
  }
  $funname = "fun1";
  $funname("This is a function !");
  ?>
  变量的“指针”。这个指针加上了双引号,表明他不是真正的指针。看看下例:
  function($a) {
  $a ++;
  }
  $c = 0;
  function($c);
  echo $c; //$c仍为0
  function(&$a) {
  $a ++;
  }
  $c = 0;
  echo $c; //$c为1
  ?>
  之所以称其为“指针”,就是因为他有了和C语言中指针相同的功能。但这又不是真正的指针,只能够是这样的去理解。
  2、正则表达式
  正则表达式是一个非常大的题目,Perl的正则表达式的强大是闻了名的。而PHP也不弱,他继承了Perl的正则表达式法则,还有自己的一套法则。这里只说PHP自己的正则表达式。
  正则表达式是最基本的元素。简单地说就是一套规则,用于去判定其它的元素是不是符合自身的规则,或者说是不是有相同的特征描述。
  正则表达式的开始符:^,结尾符$,这两个符号间的是匹配的元素。如检查一个电话号码是不是打往北京的号,用正则表达式表示就是“^010$”。只要前3位区号是010,就是北京的号,后面的电话号码就不用管了。然后,用正则表达式匹配函数ereg来判断,例:
  $pattern = "^010$";
  $phone = "01080718828";
  if(ereg($pattern, $phone))
  echo "打往北京的号";
  else
  echo "不是打往北京的号";
  ?>
  这就是正则表达式。北京的电话都是8位数字的,那我要知道这个号码是不是正确了?假如他按了9位号呢?如果判断正误?这就要用到正则表达式的字符簇。那么上例的正则表达式就要这样写:^010[0-9]{8}$,就能同时判断号码是不是符合规则。正则表达式有很多的应用,像LBB、VBB论坛在发贴时的所谓 VBB代码LBB代码的解析,都是用正则表达式完成的。
  1、SESSION 保存在服务器的哪里?
  答:通过php.ini指定,可存在指定目录的文件中或内存中,或数据库中!
  2、服务端是如何获取客户端的cookie?
  答:服务器每次处理请求的进候都可以抓取头信息的cookie并设置返回,3、如何实现SESSION共享,共享的原理是什么?
  答:配置主从数据库,将SESSION存入主数据库中,常见的做法还有在各服务器端安装MEMCAHCE,将SESSION存入各MEMCACHE中,4、请大致说出LVS搭建的过程,文件共享原理是什么?
  5、网络共享服务器上传数据是向一台服务器上传?还是多台?如何实现同步?
  6、说出你所知道的数据库设计范式?常用的建模工具是什么?(mysql建模工具)答:1NF:每一条满足原子性,不可以分割;2NF:每一条记录要满足唯一性,3NF:字段不冗余,有时我们还需要反三范式,常用的建模工具:phpMyAdmin,navicat for mysql,DOS命令行;7、如果你是项目经理,你如何管理你的项目团队的日常事宜?
  8、主从数据库的配置,都需要哪些基本的条件,需要配置什么内容?
  答:基本条件:二台以上数据库服务器,
  配置流程:1.分别打开主从服务器的bin-log;从服务器+relaylog2.在主服务器根据需求建立相应的帐号并授权;3.从服务器使用己创建好的帐号连接主服务器读取二进制文件并分析后同步配置项:主:log-bin=mysql-bin;server-id=num(int);binlog-format=mixd/statement/row/从:log_bin=mysql-bin;server-id=num(int)//唯一;relay_log=mysql-relay-bin;log_slave_updates=1;relay_only=1;9、说出你常用的版本控制器,SVN中需要配置哪几个配置文件答:SVN,GIT,CVS;配置文件:mod_authz_svn.so mod_dav_svn.so移至服务器模块中并加载,配置权限,分配用户;10、LVS 在项目运行之前需要注意哪些事项,或者说会出现什么问题?
  11、ecshop为何出现字段冗余违犯设计模式,请说出为何这么做?
  答:在某些环境下反三范式反而增加了效率,因此这么做!
  12、常用mysql优化方式,尽可能多的说?
  答:SQL语句优化;存储优化;数据库配置;服务器配置13、memcache原理是什么?是否能存入2M的value?
  答:采用C/S模式,协义是普通文本,基于libevent机制处理数据放在内存中;memcache最大只能存入1MB数据,memcache并非为存储大数据而生,但可以考虑在存储前将值先压缩或拆分成多值分配到多个key中!
  14、什么是队列?排它锁,Myisam 死锁如何解决?
  答:在默认情况下MYisam是表级锁,所以同时操作单张表的多个动作只能以队列的方式进行;排它锁又名写锁,在SQL执行过程中为排除其它请求而写锁,在执行完毕后会自动释放;死锁解决:先找到死锁的线程号,然后杀掉线程ID15、请说出mysql常用存储引擎?memory存储引擎的特点?
  答:Myisam、InnoDB、memory,memory的特点是将表存到内存中,数度快,重启后数据丢失!
  16、如何最快速的插入5000条以上的数据?
  答:先生成数据文件,在用sql语句导入
  17、你用过多少开源框架?
  答:TP/CI/ZF/YII
  18、ecshop 购物车信息存放在哪里?
  答:order_info;order_goods;order_action;
  19、PHP生成页面缓存的原理
  答:将缓存内容放入OB缓存中,在OB缓存结束或脚本执行完毕后放入到程序缓存未尾并返回!

上一篇:全面提升PHP速度攻略总结

下一篇:使用PHP快速生成Flash 动画