PHP技术
文章平均质量分 80
PHP技术
lamp_yang_3533
你又可以了
展开
-
HTTP应用:模拟灌水机器人
垃圾评论和灌水机器人一直是各大论坛和博客最头疼的问题,为了解决该问题,我们需要先了解它的产生过程,然后有针对性地进行防御。1. web浏览器的工作流程用户在浏览器中输入网址,浏览器与服务器建立连接,发起HTTP请求,请求远程服务器中的URL,服务器接收请求,理解后进行响应,将响应结果返回给浏览器,浏览器解析收到的响应数据,最后呈现给用户。其实,浏览器就是一个实现了HTTP协议的原创 2016-09-09 21:43:40 · 2120 阅读 · 8 评论 -
PHP代码调试
PHP语言没有多线程、同步等概念,大多由函数和类组成,数据类型和语法比较简单,利用其丰富的内置函数就可以实现大部分的调试功能。因此,PHP代码比较容易理解,也很容易调试。php代码调试的实现方式主要有两种:通过PHP的调试函数实现通过断点调试工具实现1. PHP的调试函数对于一般的PHP代码,使用几个常用的输出函数就可实现代码调试。常原创 2016-09-28 23:40:42 · 4135 阅读 · 0 评论 -
日志管理
在开发时,通常需要记录一些日志(log)方便后期排错和优化。无论是PHP、Apache,还是数据库,都提供了记录日志的功能,在适当的时候打开日志记录功能,有助于我们发现代码的各种问题。1. PHP日志PHP本身不是一种严谨的语言,在项目上线时有可能发生各种运行时错误或者警告,虽然可能不会影响产品的使用,但这也许就是潜在的安全问题或性能问题。所以,即使产品已经通过测试并且上线,仍然有必要原创 2016-09-29 22:49:32 · 402 阅读 · 0 评论 -
代码性能测试
对代码进行测试是项目在发布前必不可少的环节,需要保证产品的可用性、易用性、健壮性和安全性。这也是产品测试要达成的目标。软件测试一个大的方向,专业性很强。这里,我们只介绍一些基本测试方法。1. 时间点测试性能测试的主要目的是测试代码的执行效率,找到瓶颈进行优化。性能测试最常用的办法就是利用时间点,计算一段代码在运行前和运行后的时间差。代码一般是这样写的,如下:原创 2016-10-01 11:46:36 · 3456 阅读 · 0 评论 -
Cookie详解
会话变量cookie和session是Web开发中必不可少的两个概念,不少人简单地把它们理解为一个是客户端的存储机制,一个是服务器端的存储机制,而没有理解其中的原理和特性。实际上,cookie和session之间存在复杂的关系,并没有想象中的那么简单。随着Web应用的的普及,SSO单点登录的推广,有必要深刻认识cookie和session的一些基础知识。1. Cookie的基本概念和设置原创 2016-11-08 16:19:50 · 791 阅读 · 0 评论 -
抽象类和接口
1. 抽象类抽象类,即abstract class,介绍抽象类之前先介绍抽象方法。类中的没有方法体的方法就是抽象方法,一般会用关键字 abstract 定义抽象方法。抽象方法的一般格式为:abstract 可见性 function 方法名称(参数1,.....);抽象类中既可以包含抽象方法,也可以包含普通方法;抽象类不一定有抽象方法;有抽象方法的类一定是抽象类。抽象类的一般格式为:abstract原创 2016-11-10 00:38:02 · 349 阅读 · 0 评论 -
Session详解
session即会话,session是一种存储在服务器端的数据,并以此来跟踪和识别用户的机制。session和cookie都是针对HTTP协议的局限性,而提出的一种保持客户端和服务器端之间的会话连接状态的机制。session的实现可以有很多种,比如URL重写、cookie,通过在cookie中存储sessionid。1. session的基本概念和cookie一样,session也是一个通用标准,不原创 2016-11-10 17:54:49 · 598 阅读 · 0 评论 -
RBAC权限管理
1. 简介RBAC是Role-Based Access Control的首字母,即基于角色的访问控制,是最简单的权限管理解决方案。它对权限的控制精度一般为节点。基本模型为用户-角色-权限(节点),用户和角色之间、角色和节点之间都是多对多的关系。实现原理:在用户登录的时候,将用户拥有的权限(可访问的模块、控制器和方法),保存到session中; 在用户访问某个页面或按钮时,进行权限的验证,如果没有权原创 2017-09-28 21:09:28 · 4399 阅读 · 0 评论 -
内存溢出问题的解决方案
内存溢出: out of memory 是指程序运行实际所需要的内存超出了系统能够分配给它的最大内存时,就会导致out of memory。比如,PHP脚本默认申请的最大内存是128M,如果脚本执行过程中实际需要的内存超过了128M,就会导致内存溢出。内存泄露: memory leak 是指程序中已动态分配的内存,由于某种原因程序未及时释放或无法释放,从而造成内存的浪费。一次内存泄露的危害可以忽略,原创 2017-10-20 22:57:22 · 795 阅读 · 0 评论 -
PHP中的ob系列函数
在PHP中,ob系列函数,又称输出控制函数,可用于缓冲输出控制。1. ob_start()功能:打开一个输出缓冲区,所有的输出内容不再直接输出到浏览器,而是保存在输出缓冲区里面。返回值:布尔值。2. ob_get_clean()功能:获取当前缓冲区的内容并删除(关闭)当前输出缓冲区。返回值:返回输出缓冲区的内容,并结束输出缓冲区;如果输出缓冲区不是活跃的,返回false。ob_get_clean()原创 2017-10-23 22:10:25 · 438 阅读 · 0 评论 -
压力测试——测试MySQL
除了对Web服务器进行测试外,数据库服务器也是系统的瓶颈之一,因此,我们还可以对数据库进行压力测试。关于MySQL的慢查询、explain分析等,这些主要是针对单条SQL语句的,其结果反映了SQL语句的优劣;而对MySQL进行的压力测试,则可以反映SQL语句的优劣和MySQL服务器的性能。1. 利用mysqlslap工具测试MySQLmysqlslap是一个MySQL官原创 2016-10-24 17:30:24 · 6733 阅读 · 0 评论 -
JMeter+Badboy组合测试
我们可能会遇到这种场景:模拟现实操作进行性能擦拭。需要模拟一个完整流程的用户操作, 模拟一定数量的并发请求,这样的测试结果比较接近于生产环境。仅使用JMeter完成这个任务比较繁琐,因为JMeter的录制脚本过于笨拙复杂。Badboy是用C++开发的免费软件,用于测试和开发复杂的动态应用。它提供了强大的屏幕录制和回放功能,同时提供了丰富的图形结果分析功能。可原创 2016-10-21 20:45:16 · 1635 阅读 · 0 评论 -
压力测试——JMeter工具
在PHP的开发中,有时需要测试当前服务器所能承受的荷载,这通常就需要用到压力测试。性能测试侧重于代码,而压力测试侧重于服务器。最常用最简单的压力测试工具就是Apache自带的ab工具。ab压力测试工具的使用方法很简单,功能也较弱,对HTTP请求进行压力和性能测试,除了ab外,还有一款更专业的工具JMeter。JMeter是Apache的开源项目,使用Java编写,是一个功能强大的性能测试工具,可以对HTTP请求、FTP请求、数据库连接(使用JDBC)等进行测试,并且其HTTP测试的功能更强大,能够友好地原创 2016-10-10 22:55:48 · 1461 阅读 · 0 评论 -
Fiddler 抓包软件的安装和使用
1. Fiddler 简介Fiddler 专用抓包工具,工作在应用层,只能对HTTP协议(包含HTTPS协议)进行抓取。Fiddler 功能丰富,体积小巧,支持HTTP断点调试,且是一款免费的软件。Fiddler 是用 C# 编写的HTTP协议调试代理工具,它以代理服务器的方式监听你的电脑和互联网之间的http通讯。运行Fiddler后,就会在本地电脑打开8888端口,网络数据流通过F原创 2016-09-10 23:46:57 · 7267 阅读 · 0 评论 -
类的继承、类的组合与 PHP 的 traits 特性
面向对象的优势在于类的复用,继承与多态都是对类进行复用,继承是类级别的复用,多态是方法级别的复用。提到类的继承就必须提到类的组合,继承和组合有何异同?PHP到底有没有多态?这些将在下面进行讲述。1. 类的继承类与类之间有一种父与子的关系,子类继承父类的属性和方法,称为继承。在继承里,子类可以拥有父类的属性(除私有属性之外),也可以拥有父类的方法(除私有方法之外),同时,子类还可以有原创 2016-08-31 00:18:36 · 3115 阅读 · 0 评论 -
Socket进程通信机制及其应用
1. Socket简介Socket通常称为“套接字”,用于描述IP地址和端口,是一个通信链的句柄。应用程序通过套接字向网络发出请求或者应答网络请求。Socket既不是一个程序,也不是一种协议,而是操作系统提供的用于进程之间通信的一组抽象API。2. 进程通信相关概念进程通信的概念最初来源于单机系统。由于每个进程都在自己的地址范围内运行,为了保证两个相互通信的进程之间既互不干原创 2016-09-11 23:59:46 · 975 阅读 · 0 评论 -
面向接口编程
面向接口编程并不是一种新的编程范式,这里的接口是狭义的接口,即 interface 关键字,它是抽象类的一种变体。广义的接口是任何一个可以对外提供服务的出口,如:提供数据传输的USB接口、支付宝开放平台的接口、微信公众平台的开放API等。下面我们要说的接口都是狭义的 interface 接口。接口定义一套规范,它描述了一个“物”的基本功能。如果一个类(class)实现(implemen原创 2016-09-01 21:46:01 · 534 阅读 · 0 评论 -
PHP中的socket函数
要创建基于socket的应用程序,就需要详细了解socket的操作方法,这里列举PHP中一些重要的socket函数。1. socket_create ( int $domain , int $type , int $protocol )此函数用于创建一个socket,它有三个参数,返回值是一个句柄(资源)。$domain 指定创建socket时使用的通信协议族,其可选的值为:原创 2016-09-15 01:24:14 · 6115 阅读 · 0 评论 -
HTTP协议详解
1. HTTP协议概述HTTP协议是整个web的基础,是客户端和服务器端协同工作的基石,要想了解web的工作原理、优化web应用,就要完全理解HTTP协议。作为专注于web编程的PHP语言,简单的网络模型和接口,使得在PHP中实现套接字、curl等变得极其简单。简单来说,HTTP就是一个基于应用层的通信规范,它不仅保证计算机正确快速地传输超文本文档,还能确定传输文档中的哪一部分,以原创 2016-09-05 12:42:02 · 936 阅读 · 1 评论 -
简单邮件传输协议SMTP
很多应用都需要发送邮件的功能。在PHP中自带一个mail()函数,但如果想通过mail()函数发送邮件,必须先安装SMTP服务器。如果不想安装SMTP邮件服务器,却想发送邮件,这时,Socket就派上用场了。可以使用Socket连接一个已有的邮件服务器,如163提供的SMTP服务器,然后用它发送邮件。1. SMTP协议概述SMTP(Simple Mail Transfe原创 2016-09-19 14:02:42 · 3300 阅读 · 0 评论 -
WebService详解
1998年,一个名叫Dave Winer的程序员设计出了 XMLRPC,即XML Remote Procedure Call(XML 远程程序调用)。xml-rpc是使用http协议做为传输协议的rpc机制,使用xml(可扩展标记语言)格式文本的方式传输命令和数据。一个rpc系统,必然包含2个部分:rpc client(rpc客户端),用来向rpc server调用方法,并接收方法原创 2016-09-19 22:48:53 · 952 阅读 · 0 评论 -
WebService调用时的异常:Not enough message parts were received for the operation
在调用WebService的接口时,经常会出现下面的错误:Not enough message parts were received for the operation.原因:客户端在进行方法调用时,传递的参数有问题(参数不匹配)。解决方法:根据服务端提供的WSDL文档,修改客户端调用接口时的参数。例如,下面是关原创 2016-09-23 00:34:36 · 9804 阅读 · 0 评论 -
Auth权限管理
1. 简介Auth权限管理比RBAC更加灵活,auth对权限的控制更为精细。Auth的特性:是对规则进行认证,不是对节点进行认证。用户可以把节点当作规则名称实现对节点进行认证。auth=newAuth();auth=new Auth(); auth->check(‘规则名称’,’用户id’)可以同时对多条规则进行认证,并设置多条规则的关系(or或者and)。auth=newAuth();aut原创 2017-10-15 19:23:52 · 10283 阅读 · 0 评论