首页 开发编程 正文

php怎么用于测试

study集成开发环境中包含哪些软件?大部分php集成环境都包含了这三个php,phpstorm搭建运行环境方法如下1打开PHPstudy进入“查看网络状态-TCP监听端口,网上一般说Apache端口默认是80,默认带了一个tests/ExampleTest.php单元测试文件,我们可以直接在命令行下面运行单元测试:phpthinku...

php怎么用于测试,study集成开发环境中包含哪些软件?

大部分php集成环境都包含了这三个php,MySQL,Apache。编的程序能即时运行测试。

phpstorm怎么搭建运行环境?

phpstorm搭建运行环境方法如下

1打开PHPstudy进入“其他选项菜单”-“环境端口检测”-端口列表,随后点击PHPstudy运行界面的重启,查看网络状态-TCP监听端口,查看Apache的端口,我的这里是9096,网上一般说Apache端口默认是80,没错,但经常被占用。

2随后,我们来到phpstrom中修改phpstoram的默认设置,tools-Deploment-Configuration,如果第一次设置会没有,点击弹窗左上角“+”新建就好。

3端口被占用就是把localhost改成localhost:端口/地址/

4点击Mapping,进入设置。

5完成后保存退出,在点击右上角的小角标。

6找到PHP web applicantion,进入。也是没有就点击“...”的那个新建。

7没有的新建,有的改数据,默认是80,80端口被占用就改成,我们看过的被分配好的端口号。

thinkphp5怎么使用单元测试?

首先安装ThinkPHP5的单元测试扩展,进入命令行,切换到tp5的应用根目录下面,执行(当然你要安装了composer):

composer require topthink/think-testing官方的5.0版本的扩展库版本号都是1.*,2.0版本均为ThinkPHP5.1版本专用。

由于单元测试扩展的依赖较多,因此安装过程会比较久,请耐心等待。

安装完成后,会在应用根目录下面增加tests目录和phpunit.xml文件。

默认带了一个tests/ExampleTest.php单元测试文件,我们可以直接在命令行下面运行单元测试:

php think unit请始终使用以上命令进行单元测试,而不是直接用phpunit来运行单元测试。

添加单元测试文件

我们来添加一个新的单元测试文件,单元测试文件为tests/IndexTest.php,内容如下:

<?php

use tests\TestCase;class IndexTest extends TestCase{

public function testSomethingIsTrue()

{

$this->assertTrue(true);

}

}注意,单元测试文件中定义的测试类如果不存在冲突,可以不需要使用命名空间。

php程序员面试题都有哪些?

想了解IT界的那些事儿,请关注萌新程序猿!!!

刚好我之前在自己的个人网站(www.onezero.cc

)中整理过此类的知识,因此特地奉上。

首先总结一下,既然是php程序员,下面的知识是最基本的:

你需要了解PHP的各类基础知识,php语法、面向对象、设计模式等等,其次你需要懂得PHP的开发框架的知识,tp、laveral、yii等,再次你需要了解前端的知识,了解数据库(mysql等)的知识,了解php运行的服务器环境nginx、apache等,更进一步你需要了解redis、缓存之类,最后你需要掌握web开发安全的相关知识,比如sql注入、xss等。写接口,很多公司是前后端完全分离。个人面试整理

1.PHP的魔术变量都有什么?

__LINE__ 文件中的当前行号。 __FILE__ 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。 __DIR__ 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。 __FUNCTION__ 常量返回该函数被定义时的名字 __CLASS__ 常量返回该类被定义时的名字(区分大小写)。 __METHOD__ 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。 __NAMESPACE__ 当前命名空间的名称(区分大小写)。此常量是在编译时定义。

2.PHP超级全局变量(9个)

$GLOBALS 储存全局作用域中的变量 $_SERVER 获取服务器相关信息 $_REQUEST 获取POST和GET请求的参数 $_POST 获取表单的POST请求参数 $_GET 获取表单的GET请求参数 $_FILES 获取上传文件的的变量 $_ENV 获取服务器端环境变量的数组 $_COOKIE 浏览器cookie的操作 设置cookie:setcookie(name, value, expire, path, domain); 获取cookie:$_COOKIE[“user”]; 删除cookie:setcookie(“user”, “”, time()-3600);//设置过期时间 $_SESSION 服务端session的操作 使用session前一定要session_start()启动session 储存session:$_SESSION[“name”]=”King”;//数组操作 销毁session:unset($_SESSION[“name”]);//销毁一个 session_destroy()和unset($_SESSION);//销毁所有的session

3.PHP魔术函数(13个)

__construct() 实例化对象时被调用,当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用。 __destruct() 当删除一个对象或对象操作终止时被调用。 __call() 对象调用某个方法,若方法存在,则直接调用;若不存在,则会去调用__call函数。 __get() 读取一个对象的属性时,若属性存在,则直接返回属性值;若不存在,则会调用__get函数。 __set() 设置一个对象的属性时,若属性存在,则直接赋值;若不存在,则会调用__set函数。 __toString() 打印一个对象的时被调用。如echo $obj;或print $obj; __clone() 克隆对象时被调用。如:$t=new Test();$t1=clone $t; __sleep() serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。 __wakeup() unserialize时被调用,做些对象的初始化工作。 __isset() 检测一个对象的属性是否存在时被调用。如:isset($c->name)。 __unset() unset一个对象的属性时被调用。如:unset($c->name)。 __set_state() 调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。 __autoload() 实例化一个对象时,如果对应的类不存在,则该方法被调用。

4.前端后端的常用开发框架都有哪些?

前端:(1) CSS: Bootstrap、EasyUI

(2)JavaScript:VUE.js、angular.Js、jQuery.js。

后端:thinkPHP、Yii、Laravel、swoole、workerman(当时只想到这几个)、。

5.如何查看防火墙开放的端口号service iptables status

6.查看防火墙特定的端口号,例如80端口的状态?netstat -an | grep 80 查看80端口被什么占用netstat -tunlp | grep 80lsof -i:80

7.Linux系统中System进程占用大量CPU,可能的原因?(1) 进入了一个死循环无法跳出来;(2) 也许是一直在等待一个信号,如从dbus上读取一个用户需要的信息; #dbus是一个为应用程序间通信的消息总线系统, 用于进程之间的通信。(3) 有可能是程序在对一个非常大的内容进行分析和处理;(4) 有可能是程序要处理的问题比较多,所以在一个个慢慢的执行。

8.说一下HTTP2.0与HTTP1.0的根本区别。

9.InnoDB和MyISAM的区别是什么,二者分别应用与什么方面?

10.用尽量多的方法说明如何提高一个网页的访问速度。

11.请设计一个通信协议,实现与摄像头之间的通信,要注意协议的安全性和可扩展性。

12.如果一个公司有几十个系统,每一个系统都需要登录,现在请你设计一个系统,可以实现每一个系统的单点登录。

其他整理

1、用PHP打印出前一天的时间格式是2017-9-5 15:30:21

echo date(‘Y-m-d H:i:s’, strtotime(‘-1 day’));

2、echo(),print(),print_r()的区别

echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)

print只能打印出简单类型变量的值(如int,string)

print_r可以打印出复杂类型变量的值(如数组,对象)

echo — 输出一个或者多个字符串

3、能够使HTML和PHP分离开使用的模板

smarty,Heyes Template Class等

5、使用哪些工具进行版本控制?

VS Server on Apache作服务端,WinCVS作客户端;Subversion on Apache/DAV 做服务端,TortoiseSVN做客户端,或者Subclipse做客户端.

6、如何实现字符串翻转?

strrev()

7、优化MYSQL数据库的方法。

(1).选取最适用的字段属性,应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。

(2).使用连接(JOIN)来代替子查询(Sub-Queries)

(3).使用联合(UNION)来代替手动创建的临时表

(4).尽量少使用 LIKE 关键字和通配符

(5).使用事务和外键

8、PHP的意思

Hypertext Preprocessor

9、MYSQL取得当前时间的函数是?,格式化日期的函数是

now(), DATE_FORMAT(date,format)

10、实现中文字串截取无乱码的方法。

mb_substr()

11、您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?

TortoiseSVN-1.2.6 svn-1.2.3

12、您是否用过模板引擎? 如果有您用的模板引擎的名字是?

smarty

13、请简单阐述您最得意的开发之作

14、对于大流量的网站,您采用什么样的方法来解决访问量问题?

首先,确认服务器硬件是否足够支持当前的流量

其次,优化数据库访问。

第三,禁止外部的盗链。

第四,控制大文件的下载。

第五,使用不同主机分流主要流量

第六,使用流量分析统计软件。

—————————————————————–

15、用PHP写出显示客户端IP与服务器IP的代码

16、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们?

require()和include()除了怎样处理失败之外在各

方面都完全一样。include()产生一个警告而require()则导致一个致命错误。

换句话说,如果你想在丢失文件时停止处理页面,用require()。include() 就不是这样,脚本会继续运行。

require()无论如何都会包含文件,而include()可以有选择地包含.

代替用

include_once

require_once

17、如何修改SESSION的生存时间.

18、有一个网页地址, 比如PHP开发资源网主页: ,如何得到它的内容?

19、在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(?);

未授权(Unauthorized)

为什么php不适合做计算密集型业务?

PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。

1.优点:开源 免费性 快捷性 [程序开发快,运行快,技术本身学习快]

1)跨平台,性能优越,跟Linux/Unix结合别跟Windows结合性能强45%,并且和很多免费的平台结合非常省钱,比如LAMP(Linux /Apache/Mysql/PHP)或者FAMP(FreeBSD/Apache/Mysql/PHP)结合,或者数据应用够大可以考虑换 PostgreSQL或者Oracle,支持N种数据库。(N >= 10)

2)语法简单,如果有学习C和Perl的很容易上手,并且跟ASP有部分类似。有成熟的开发工具,比如NuPHPed,或者Zend Studio等等,再Linux平台下可以使用Eclipse等等。

3)目前主流技术都支持,比如WebService、Ajax、XML等等,足够应用。

4)有比较完整的支持,比如使用ADODB或者PEAR::DB做数据库抽象层,用Smarty或者smart template做模板层,如果是PHP 5.1的话,还能够使用PDO(PHP Data Object)来访问数据库。

5)有很多成熟的框架,比如支持MVC的框架:phpMVC,支持类似ASP.net的事件驱动的框架:Prado,支持类似Ruby On Rails的快速开发的框架:Cake等等,足够满足你的应用需求。

6)PHP 5已经有成熟的面向对象体系,能够适应基本的面向对象要求。适合开发大型项目。

7)有成熟的社区来支持PHP的开发。

8)目前已经很多大型应用都是使用PHP,比如淘宝网、Yahoo、163、Sina等等大型门户,很多选用PHP来作为他们的开发语言,所以大型门户都能够选用它,我想足够能够你的使用了。

9)有很多开源的框架或开源的系统可以使用,比如比较知名的开源框架有Zend Framework、CakePHP、CodeIgniter、symfony等,开源论坛有Discuz!、Phpwind等,开源博客 WordPress,开源网店系统如Ecshop、ShopEx等,开源的SNS系统如UCHome、ThinkSNS等。

10)使用成本低 (linux apache mysql php内核)

2.缺点

1)函数命名不规范 驼峰法和下滑线,传参位置不一 你知道的

2)单线程 ; PHP本身,一直以来php就是个单进程的程序;虽然php的pthreads扩展早就有了。但是它不够稳定,运行运行着就会莫名其妙的自己挂掉;php的扩展都是C写的,这也就意味着任何一个扩展出现线程竞争资源控制问题都能让整个挂掉

3)核心异步网络不支持(当然在linux只有同步非阻塞网络模型)。却少了这个使得很难开发一个能够承受大并发的网络应用。传统的网络模型和io都阻塞的。这样基本的编程的做法就是一个进程(或者线程)响应一个用户链接请求。因此无法完成像实时网游那样需要成千上万网络连接的任务。尽管php也有Libevent、eio扩展对此算是某种程度上面的弥补,但是感觉都不是那么完善

4)只支持web开发,不方便做 .exe文件,不方便做桌面应用程序. 不方便做手机程序.

5)不适合做爬虫、自动运行脚本.科学运算项目,这语言基本构架就不适合,虽然有很多方法实现。

6)后期维护困难。后期提速空间局限性较大。

在对PHP有一个大致的认识以后,我们来了解一下为什么说PHP慢?

PHP的慢是相对于C/C++级别的语言来说,事实上,PHP语言最初的设计,就不是用来解决计算密集型的应用场景。我们可以这样粗略理解为,PHP为了提升开发效率,而牺牲了执行效率。

我们知道PHP一个很大的特点,就是弱类型特性,也就是说,我可以随意定义一个变量,然后给它随意赋值为各种类型的数据。以一个int整型数字为例子,在C语言中:

int num = 200; // 通常是4字节

但是,如果是PHP定义了一个同样的变量,实际对应的存储结构则是:

这个结构体将会占据远比C变量多得多的内存,PHP中定义方式如下:

$a = 200; //这变量将实际占用对比C变量很多倍的存储空间。

其实对PHP来说,无论存储什么类型的数据,都是用上述“通杀”的结构体实现。为了兼容PHP程序员的变量类型“乱入”,PHP做到了对开发者的友好,但是对执行引擎很残酷。单个变量内存消耗可能还不明显,一旦用到PHP的数组等,则复杂度指数上升(数组的实现是HashTable)。然后,Zend引擎执行时,将这些PHP代码编译为opcode(PHP的中间字节码,格式有点类似于汇编),由Zend引擎逐行解释执行。

无论是字符串的连接操作,还是数组的简单修改等,几乎都是“PHP程序员一句话,Zend引擎跑断腿”的节奏。因此,同样的操作,对比C来说,PHP消耗了更多的CPU和内存等系统资源。除此之外,还有内存自动回收、变量类型判断等等,都会增加系统资源的消耗。

例如,我用纯PHP实现的快速排序函数和原生sort函数,排序10000个整型数字,来做一个耗时对比,结果如下:

原生的sort耗时3.44 ms,而我们自己实现的PHP函数sort则是68.79 ms。我们发现,两者执行效率差距巨大。我的测试方式,是计算函数执行前后的时间间隔,而不是整个PHP脚本从启动到结束的时间。PHP脚本启动和关闭过程,本身有着一系列的初始化和清理工作,也会占据不少的耗时。

通常情况下,PHP执行效率的排行是:

最快的是PHP语言结构(isset、echo等),PHP语言的一部分(它们根本不是函数)。

然后比较快的就是PHP的原生和拓展函数。PHP拓展,基于Zend API之上,用C实现的功能,执行效率和C /Java是属于同一个数量级的。

真正慢的就是,我们通过PHP自己写的代码和函数。例如,假如我们使用的比较重的纯PHP实现的框架,因为框架本身的模块很多,所以,会明显拖累语言层面的执行效率,同时占据更多的内存。(国内的Yaf框架,以拓展的方式实现,因此执行效率远快于纯PHP写的框架。

在一般情况下,我们并不推荐用过PHP实现逻辑复杂计算类型的功能,尤其是Web系统流量比较大的场景下。因此,PHP程序员应该对PHP的各种原生函数和各类拓展有一个比较广泛的了解,在具体的功能实现场景中,寻求更原生的解决方案(原生接口或者拓展),而不是自己写一堆复杂的PHP代码来实现这类型功能。

如果有足够的PHP拓展开发实力,将这类型业务功能重写为一个PHP拓展,也会大幅提升代码的执行效率。这是一个非常不错的方式,也被广泛应用PHP优化中。但是,自己编写的PHP业务拓展的缺点也很明显:

拓展开发耗时比较长,需求变更的时候修改也复杂,写得不好可能会影响Web服务稳定性。(例如,在Apache的worker模式下,多线程场景下挂掉,会影响同一个进程下的其他正常子线程。如果是多线程的Web模式,编写拓展还需要支持线程安全)

拓展在PHP版本升级的时候,可能需要做额外的兼容工作。

人员变动后的维护和接手成本也比较高。

实际上,在互联网一线企业中,更常见的解决方案,并非增加PHP拓展,而用C/C 独立写一个服务server,然后PHP通过socket和服务server通信来完成业务处理,并不将PHP本身和业务耦合在一起。

不过,Web服务大部分的性能瓶颈都在网络传输和其他服务server的耗时上(例如MySQL等),PHP执行的耗时在整体耗时的占用比例非常小,所以从业务角度来说,影响可能并不明显。

本文转载自互联网,如有侵权,联系删除