1. php程序调试方法总结
相信很多朋友们都有调试程序的经历 然而很多时候调试程序是痛苦而又漫长的过程;它不仅需要细心 更需要耐心 切忌心浮气躁 但是当找出问题并顺利解决它时 又会给人无比激动的喜悦 这里总结一下笔者在程序调试中的使用的原则 工具 以及方法 这里需要说明的是 某些原则性的东西 各种语言都是差不多的 而涉及到具体的工具和某些具体的调试方法 这里只涉及web开发方面的内容
总体原则
找出问题原因
程序需要调试 是因为程序有问题 而调试的第一目标是找到原因 常见调试方法 排除法: 当我们面对整个复杂的系统时 常常完全不知道问题出在什么地方;这个时候可以先将与问题不相关的地方排排除 逐渐缩小调试范围 独立模块法: 大部分程序都有模块结构 将可疑模块单独拿出来 模拟输入相应的操作数据 看是否出现问题 比较法 如果程序或系统是基于某个平台时 可以先看看其他基于本平台的程序或系统 找出是平台问题还是本程序问题 很多时候这种方法是用来排除不成熟平台上的隐藏问题 对比法 对于自己实现的程序 可能已经有相应的开源的模块 可以把这些程序源码找出来 和自己的程序进行对比 这样不仅节省时间 还能借鉴别人的优秀之处
问题定位
问题原因的多种多样 可能这个时候你只能知道是什么样的问题 可能与什么相关 这个时候就需将出现的代码段找出来 而需要做到这一步 一般开发环境为我们提供很多实用工具 借助这些工具 可以一步一步地查看程序的输入和输出 根据每一步的输入输出 定位问题
有一部分很厉害的人 可以通过阅读代码 找到出现问题的地方 但是很多问题都是调试者自己因为疏忽造成的 而要通过这样方式去查找问题 几乎是不可能的 因为已经形成固定的思维定势
解决问题
找到问题的原因和相应代码行 解决它很多时候是一件比较简单的事 因为这些问题往往自己疏忽或者自己考虑不周 但是某些时候并不总是这样的 而是由于外部环境造成的 比如你的网站访问的人数增多 你当初没有考虑到这些数据压力 同时也没有考虑到高度并发性的问题 这个时候问题解决起来是你觉得比较棘手 而要解决这样的问题 不仅仅要专注程序 更要从系统架构方面着手 综合各方面的知识 进行全面的考虑
web开发常用调试工具
俗话说 工欲善其石 必先利其器 对于程序的调试 也必须借助外部工具 这里介绍几种在开发web程序中常常用到的工具
xdebug xhprof php性能调试工具 他们都是php的一种扩展 可以很方便的安装和配置 这两个工具主要是将你程序的内部运行状况 调用函数以一种简洁的方式告诉你 让你对程序在什么地方占用过多的资源 那些地方需要进行优化一目了然 顺便提一下 xdebug生成的profile文件一般借助winCacheGrid查看
firephp firbug 前者主要是php的调试工具 而后者是web开发必不可少的工具 它不仅能查看请求 还能调试js css
在ie下面可以使用HttpWatch 如果需要将数据做深入分析 可以使用抓包工具
php中常使用的调试函数 error_report var_mp print_r var_export
mysql apache/nginx的常用的调试技巧 分析他们日志文件也是相当重要 在linux下查看日志文件的常用命令 cat more less grep awk sed
常见的调试技巧和方法
下面以我调试的程序来介绍一下具体的调试方法和技巧
例子 这是一个php开发的游戏引擎 主要功能提供双发球员移动位置 状态 传球 技能等功能控制 整个程序通过xml文件保存结果 突然某天 有两个用户进行比赛 返回的xml不符合正常的结构 从返回的结果来看 球员的移动位置有些不正常 其中少了某些步骤 于是决定从游戏的AI入手查找 但是也没有发现此处有什么异常 最后将输入的球员数据打印出来 然后将中间产生的数据也打印出来 结合程序的处理逻辑 发现是这两个用户有同一个球员 因此导致在处理的时候 两个人的球员出现混乱 找到原因后 就将这个以球员标识改为以球队和球员共同决定即可
例子 程序刚上线 有些热心的朋友们喜欢对程序进行一些压力测试 某次突然 w的请求很大的一个静态资源 直接导致硬盘瘫痪 对于这种情况 必须查看访问日志 才知道发生什么事 否则人家对你攻击了 你还找不到原因 当然对于这样的攻击 直接把静态资源放到cdn上 另外 随着访问用户量的增大 系统的压力增大 反应逐渐变慢 我们不得不考虑 以前只需要 几毫秒能处理的程序 现在需要 几秒 这个时候程序的并发性设计就很重要了 否则会造成数据异常的情况
例子 使用外部软件出现异常 例如使用memcached的时候 如果某台没有启动或者不能使用了 这个时候nginx一般就会对某些使用memcache的请求返回 是不是感觉有点无厘头 可以考虑改写memcahce 的php扩展了
lishixin/Article/program/PHP/201311/21278
2. 新手如何学习编程
熟悉以下关键东西,可以边学边做,定期训练,经常思考,长期积累:
1、语法。
2、基础理论(数学、数据结构、算法等)。
3、设计方法(编程原则、设计模式、框架设计等)。
4、库(核心、基础、UI、扩展、游戏引擎等)。
5、计算机相关(操作系统、网络、图形学等)。
6、领域知识(游戏设计、网站设计等)。
7、开发工具(编辑器、IDE、自动部署等)。
8、项目管理(进度管理、分工协作、Bug管理、版本控制等)。
最普遍也是最重要的能力:创造力。努力分析并理解好做什么以及怎么做。要知道上面那些东西一开始都是不存在的。
具体方法包括:
1、快速阅读入门教程和书籍,适合学习语言和基础库。比如我学Java读的《Java编程思想》,练习题做过一点,然后学ActionScript就没读过书,只读过Adobe官方文档《ActionScript 3.0编程》。
2、阅读库的文档、实例、源码。比如Flash、Flex开发,熟悉官方API很重要,很多细节要具体使用时才注意到,这时候最好做个笔记,虽然我从没看过我的笔记。
3、做一个自己感兴趣或熟悉的小项目,比如我就以黑白棋游戏作为多个语言的试水项目,一样的逻辑,便于把关注点放在语言特点上。
4、自己动手丰衣足食。厨师有菜谱,程序员可没菜谱。比如我做游戏,最关键的游戏编程知识全部是动手学出来的,很少有专门针对某个业务领域(如游戏)的编程书籍,要么是入门书,要么是模式书(如算法)、理论书(图形学),很少有书籍教你如何开发一个45度角地图系统加编辑器的,全靠自己思考,以及看前人的代码,需要时找些网络资料。关键是,可以培养最重要的创造力。
对于算法和设计模式,可以研读下,但是关键还是靠平时如何使用了。新手勉强不来的。
项目管理方面的,就得靠工作经验了,多思考多提意见不要只走流程。
3. php怎么用
推荐阅读:腾讯T3-T4标准精品PHP架构师教程目录大全,只要你看完保证薪资上升一个台阶(持续更新)点击此处
4. 学习php(算法)
这些算法 只是为了锻炼逻辑思维。不需要去学c语言。
如果你觉得这些算法实现起来比较困难,最好是搜索一些别人实现这些算法的代码。
5. php程序中的逻辑思维怎么培养呢
/php中的逻辑思维的/培养可以从下/面的几个/方向/进行学习,思维快的能快速/编写逻辑代码。
第一:明确学习目的
逻辑思维学习编程对多数IT业人员来说都是非常有用的。学编程,做一名编程人员,从个人角度讲,可以/解决在软件/使用中所遇到的问题,改进现有软件,可以为自己找到一份理想的工作添加重/要得砝码,有利于在求/职道路上谋得一个好的职位;从国家的角度,可以为中国的软件产业做出应\//有的贡献,一名优秀/的程序员永远是被争夺的对象。学习编程还能/锻炼思维,使我们的逻/辑思维更加严密;能够不断享受/到创新的乐趣,将一直有机会走在高科技的前沿,因为程序设计本/身是一种/创造性的工/作。知识经济时代给我们带来了无限的机会,要/想真正掌握计算/机技术,并在IT行业里干出/一番事业来,有所作为,具有一定的编程能力是一个基本条件和要求。
第二打好基础,学好基础知识对我们开发也很重要学编程要具备一定的基础,总结之有以下几方面:
/首先是数学基础 从计算机发展和应用的历史来看计算机的数学模型和体系结构等都是有数学家提出的,最早的计算机/也是为数值计算而设计的。因此,要学好计算机就要有一定的数学基础,出学者有高中水平就差不多了。
其次是逻辑思维能/力的培养 学程序设计要有一定的逻辑思维能力,“逻思力”的培养要长时间的实践锻炼。要/想成为一名优秀的程序员,最重要的是掌握编程思想。要做到这一点必须在反/复的实践、观察、分析、比较、总结中逐/渐地积累。因此在学习编程过程中,我们不必等到什么都完全明白了才去/动手实践,只要明白了大概,就要敢于自己动手去体验。谁都有第一次。有些问题只有通过实践后才能明白,也/只/有实践才能把老师和书上的知识变成自己的,高手都是这样/成材的。最后是选择一种合适的入门语言 面对各种各样的语言,应按什么样的顺序学呢?程序设计工/具不外乎如下几类: 1)本地开发 应用软件开发的工具有:Visual Basic 、Delphi 、VC++ ( C++ Builder ) 等;数据库开/发工具有:Visual Foxpro 、Oracle Developer 、Power Builder 等。 2)跨平台开发 开发工具如 Java 等。 3)网络开发 对客户端开发工具如:Java Script 等;对服务器开发工具如:PHP 、ASP 、JSP 、ISAPI 、NSAPI 、CGI 等。 以上不同的环境下几种开发工具中 VB 法简单并容易理解,界面设计是可设化的,易学、易用。选 VB 作为入门的方向对出学者是较为适合的。
第三:注意理解一些重要概念
一本程序设计的/书看到的无非就是变量、函数、条件语句、循环语句等概念,但要真正能进行编程应用,需要深入理解这些概念,在理解的基础上应用,不要只简单地学习语法、结构,而要吃透针对这些语法、结构的应用例子,做到举一反三,触类旁通。
第四:掌握编程思想,编程思/想使用较多的就是oop编程思想
学习一门语言或开发工/具,语法结/构、功能调用是次要的,最主要是学习它的思想。例如学习 VC 就要学习 Windows 的内在机理、/什么是线程./.....;学习 COM 就要知道VTALBE 、类厂、接口、idl......,关键是学一种思想,有了思想,那么我们就可以触类旁通。
第六:多实践、多交流,一切思维来自项目开发的积累
掌握编程思想必须在编程实际工作中/去实践和体会。编程起步阶段要经常自己动手设计程序,具体设计/时不要拘泥于固定的思维方式,遇到问题要多想几种解决的方案。这就要多交流,各人的/思维方式不同、/角度各异,/各有高招,通过交流可不断吸收别人的长处,丰富编程实践,帮助自己提高水平。亲自动手进行程序设计是创造性思维应用的/体现,也是培养逻辑思维的好方法。
第七:养成良好的/编程习惯
编程入门不难,但/入门后不断学习是十分重要的,相对来说较为漫长。在此期间要注意养成一些良好的编程习/惯。编程风格的好坏很/大程度/影响程序质量。良好的编程风格可以使
程序结构清晰合理,且使程序代码/便于维护。如代码的缩进编排、变量命令规则的一致性、代码的注释等。
第八:/上网学编程
在网上可以学到很多不同的编程思想、方法、经验和技巧,有大量的工具和作品及相关的辅导材料供下载
8.加强计算机理论知识的再学习
思维培养学编程/是符合“理论→实践→/再理论→再实践”的一个认识过程。一开始要具有一定的计算机理论基/础知识,包/括编程所需的/数学基础知识,具备了入门的条件,就可以
开始编程的实践,从/实践中可以发现问题/需要加强计算机理论知识的再学习。程序人人皆可编,但当你发现编/到一定程度很/难再提高的/时候,就/要回头来学习一些计算机科学和数
学基础理论。/学过之后,很多/以/前遇到的问题都会迎刃而解,使人有豁然开朗之感。因此在学习编程/的过程中要不断地针对应/用中的困惑和问题深/学习数据结构、算法、计算机
原理、编译/原理、操作系统/原理、软件工程等计算机科学的理论基础和数理逻辑、代数系统、图论、离散数学等数学理论基础知识。这样经过不断的学习,再努力地实践,编程水平一定会不断提高到一个新高度。
6. 一个优秀PHP程序员标准
MySQL能力
在开发上的应用基于几个能力体现:
(1)了解:知道用PHP连接数据库;懂得写一些简单的SQL;建一些简单的索引;懂得用工具简单操作一下数据库(增删改库表结构数据等等)。
(2)熟悉:懂得在开发应用上设计数据库,建立一些有效的索引,用explain分析SQL性能,压力测试等等。
(3)很熟悉:深入了解数据库索引、存储引擎原理以及运行机制,能有效地构建高性能可扩展的数据库结构/架构,有效地优化数据库性能配置并加以调试,分析数据库运行状态。
(4)精通:简单地说具备以上所有能力的同时,有多年高负载分布式环境下的优化管理经验。
据观察以及交往经验,70%的PHPer处在了解阶段,25%处于熟悉阶段,>4%很熟悉,精通的人基本就不是PHPer了。
◆70%这个群体最容易忽视MySQL,以为MySQL只是简单的存储媒介,没有优化意识,认为加个内存、CPU就能解决问题。
典型事件:join、order by、group by等语句性能一塌糊涂,数据库根本没有设计(仅限于拆成一个主表,N个附表等),搞不清字段类型及作用,碰到大表的复杂查询就没辙。
◆20%这个群体的人只是MySQL运行机制理解不透彻,对影响MySQL性能的关健因素把握不明确,不熟练。
典型事件:熟读手册,但说不清索引原理,不知道二叉树、HASH等算法对于数据库的作用
◆4%的群体已经基本可以胜任DBA的职能。
OOP能力
(1)了解:了解变量的作用域、类型,及其意义,了解继承机制等,懂得复用、封装概念。
(2)熟悉:熟练应用接口、抽象等技术混合开发程序,并理解其中含义,一般研究过Java。
(3)很熟悉:有过OOP架构设计经验,熟悉设计模式、UML,熟悉PHP对象运行机制,内容管理等。
(4)精通:应该是架构师级别了,不限于PHP。
经常我们会碰到一些自称熟悉OOP却连public、private、protected、static都解释不清的人,是肯定没有经历过正规的OOP项目。
大型网站经验
(1)了解:熟悉PHP开发下的缓存应用(Memcache、APC等);接触过LVS、SQUID应用;有一定的Session处理方案;熟悉负载均衡;熟悉PHP数据连接池应用;了解PHP编程性能优化。
(2)熟悉:掌握分布式缓存及缓存性能优化、熟悉存储系统、文件系统、数据库,开发可扩展平台。能结合负载均衡合理布置流量,对PHP运行性能进行监控与分析。
(3)非常熟悉:具备系统分析师能力,已经超出PHPer环节;
(4)精通。
7. 如何开发直播软件
你好,很高兴能够帮助您!希望能帮助到你,还请及时采纳谢谢!
流程如下:
组建订技术部门:
1、如果想自己进行视频直播软件开发,起码得有自己的技术团队,其中至少包括这些组安卓组、1OS组、后台组、测试组和产品组成员
2、租赁办公场地、购买办公设备(电脑常用手机机型)等。
3、招聘会计、推广等人员。
决定产品的定位
1、决定产品功能
产品的基础功能如:多渠道登录/支付/分享拍摄直播、私信、评论、关注、多分类列表发礼物、抢红包、多种房间设置、美颜等功能是定要有的,至于短视频、商城等功能是可以酌情根据产
品定位进行选择性开发的。
2、决定U页面
UI界面有的是用代码编写的,有的是用一张图片放上的,U方面一个appー个样子,好的UI界面流畅、美观、内存占用小。
3、决定开发语言
现在市面上比较流行的视频直播软件开发语言通常是这样的,手机端安卓开发语言采用:jav a原生开发、1OS采用: objective-c原生开发,后台管理采用PHP语言开发。
整个系统由WEB系统、 REDISR服务、MYSQ L服务、视频服务、聊天服务、后台管理系统和定时监控等系统模块组成。
4、决定流媒体协议
如果选择做微信端小程序直播,可以选择HL S,如果是APP可以选择RTMP协议,两种协议各有各的优势,要根据产品定位进行选择。
进行软件开发和系统调试。
四、与三方进行对接
在视频直播软件开发完毕后,还要与三方进
行对接扌能实现一些我们无法独立开发的服务,比如调用地图定位、比如更高级的美颜服务等。
五、为上架做准备(如果要运营的话)备好公司资质证明、APP图标、开发者账号(公司/企业)等。