1. 网上找的游戏php源代码如何才能在本地测试,求详细步骤!!!
先下载一个集成环境,下载的源码打开看下
是不是有说明文档,集成环境用phpstudy这
个可以测试
2. php如何进行单元测试
何为单元测试:
指对软件中的基本单元进行测试,如函数、方法等,以检查其返回值或行为是否符合预期;实际中软件是很复杂的,由许多组件构成,执行流程连贯在一起,要进行单元片段的测试,就需要为其提供执行上下文(或者说参数)和环境(比如打桩模拟一些对象)来运行,并监控其行为和返回值,为此我们就需要写出做这件事情的程序代码,这样的代码叫做测试用例。
许多测试用例有机结合在一起形成一个整体的测试,又叫做测试套件,被测试的程序代码叫做生产代码。phpunit这个软件就是用来帮助我们写测试用例并进行测试的。
php的单元测试:phpunit
在其官网有详细教程,这里介绍一些补充内容。
首先要明白phpunit软件本身就是由php语言实现,其使用是通过命令行进行的,并不是通过浏览器访问
明白这一点很重要,许多新人被卡在这里,很基础也很简单,但似乎没怎么被提及。
在官网下载后得到一个phar文件,同时下载phpunit使用文档,按照里面的安装方法进行安装,之后在命令行输入以下命令:
phpunit --help
如果显示出了帮助信息即安装成功,在命令行当前目录下建立一个测试用例为yunke.php,内容如下:
<?phpuse PHPUnit\Framework\TestCase;class yunkeTest extends TestCase{public function testPushAndPop(){$stack = [];$this->assertEquals(0, count($stack));array_push($stack, 'foo');$this->assertEquals('foo', $stack[count($stack) - 1]);$this->assertEquals(1, count($stack));$this->assertEquals('foo', array_pop($stack));$this->assertEquals(0, count($stack));}}?>
然后在命令行输入以下命令:
phpunit yunke
显示如下内容:
PHPUnit 5.7.12 by Sebastian Bergmann and contributors.. 1 / 1 (100%)Time: 159 ms, Memory: 7.00MBOK (1 test, 5 assertions)
恭喜,你已经成功运行了一个单元测试。
3. php 代码如何调试
开启Apache服务器以及MY_SQL数据库。
在PHP集成环境的安装目录“www”文件夹中创建我们需要用到的php文件,1.php.
用Notepad++打开1.php文件,然后输入PHP的语言格式:
<?php ?>
输入标准的输出语言:
<?php
echo "Hello world !" //输出Hello world 语言。 echo 是打印的意思
?>
在网页上输入localhost:8080/1.php可以调试我们自己写的php代码
PHP的简单运算,用$来定义应用数据,输出也是一样。
<?php
$sum=1;
$total=1.22;
$sum=$total+$sum;
echo $sum ?>
4. 整套php源代码在本地怎么测试运行
那得看你这个项目是用php的框架写的还是原生php写的,如果是用框架写的,可以写个配置域名或者ip来指定访问这个项目的入口文件,如果是用原生php写的,就可以不用这么麻烦,所有php文件都可以通过localhost加文件名来访问,还有一点就是还要确定你这个项目的资源文件,例如图片、css文件、js文件,不过这些看你访问入口文件就知道了,一步一步修改配置即可,希望对你有帮助
5. PHP怎么测试
如果只是简单的测试的话,可以用echo或者var_mp打印信息来查看,当然如果你用的是zend或者eclipse这样的编辑器的话,可以加上zendbug来调试信息
php100用的这个eclipse可以一保存就查看信息,看下面的提示就知道错误在哪里了。下载地址:http://www.php100.com/html/download/tools/2009/1203/3603.html
6. 针对PHP代码的网站,如何进行白盒测试需要什么工具配合
用PhpUnit吧
PHPUnit是一个轻量级的PHP测试框架。它是在PHP5下面对JUnit3系列版本的完整移植,是xUnit测试框架家族的一员(它们都基于模式先锋Kent Beck的设计)。
单元测试是几个现代敏捷开发方法的基础,使得PHPUnit成为许多大型PHP项目的关键工具。这个工具也可以被Xdebug扩展用来生成代码覆盖率报告 ,并且可以与phing集成来自动测试,最后它还可以和Selenium整合来完成大型的自动化集成测试。
7. 怎样调试PHP页面中的javascript代码
1、再火狐浏览器里面打开你需要戚雹调适的页面
2、右键查看元素
3、然后就可以毕核看到
在这就可以看到哪个js哪个地方有问高数帆题了
8. 怎样在本地测试php代码
准备工作 首先要下载如下软件,推荐到官网下载,如果你是像我一样只是测试,那么到skycn.com下载吧,这样比较快。
Apache http://httpd.apache.org/
最流行的HTTP服务器软件之一。快速、可靠、可通过简单的API扩展,Perl/Python解释器可被编译到服务器中,完全免费,完全源代码开放。
我下载的是for Windows版本,目前最新版本是:2.0.54
PHP http://www.php.net/
PHP 是一种 HTML 内嵌式的语言。而PHP独特的语法混合了 C、Java、Perl 以及 PHP 式的新语法。它可以比 CGI 或者 Perl 更快速的执行动态网页。
我下载的是for Windows版本,目前最新版本是:5.0.4
MySQL http://www.mysql.com/
是一个多线程的,结构化查询语言(SQL)数据库服务器。SQL 在世界上是最流行的数据库语言。MySQL 的执行性能非常高,运行速度非常快,并非常容易使用。
我下载的是for Windows版本,目前最新版本是:5.0.4 Beta
phpMyAdmin http://www.phpmyadmin.net/
phpMyAdmin 是一个用PHP编写的,可以通过互联网控制和操作MySQL。通过phpMyAdmin可以完全对数据库进行操作。
我下载的是for Windows版本,目前最新版本是:2.6.2-pl1
安装apache和PHP
下面是我的安装记录:
选择80端口,将apache安装在 e:\apache下。
配置apache里的httpd.conf文件(conf目录下)
找到 DocumentRoot E:/apache/Apache2/htdocs 将其改为WEB目录E:/htdocs
找到 DirectoryIndex index.html index.html.var 在后面加入 index.htm index.php default.php default.html
选择模块化模式安装
找到 #LoadMole ssl_mole moles/mod_ssl.so 这行,在此行后加入一行
LoadMole php5_mole e:/php/php5apache2.dll
找到 AddType application/x-gzip .gz .tgz 这行,在此行后加入一行
AddType application/x-httpd-php .php
将php-5.0.4-Win32.zip里内容解压到e:\php里,找到php.ini-recommended,重命名为php.ini并拷贝到windows目录下。
NTFS上记得给服务器开PHP.ini的读权限。
查找extension_dir后面的改为e:/php/ext
查找Windows Extensions,把下面有一排的;extension=php_***.dll的分号去掉,就是支持组件了。我把 extension=php_gd2.dll extension=php_mbstring.dll extension=php_mysql.dll 的分号去掉了。
php5默认不支持mysql了,所以要为他添加支持,除了extension=php_mysql.dll去分号之外,在php目录里有个libmysql.dll文件,把它复制到系统的system32文件夹下,复制php.ini到windows目录下。
此时PHP环境基本已经配置成功
在WEB根目录里建一个名为test.php的文件内容如下
<? echo phpinfo(); ?>
重新启动apache服务,用浏览器打开 http://localhost/test.php
如果可以看到php配置输出信息就成功了
安装mysql
将mysql安装到指定目录,然后安装程序会引导你一步步配置。不过奇怪的是最后任务栏没有出现Mysql的图标。
修改mysql数据库的root密码
用cmd进入命今行模式输入如下命令: ( 注: d:\mysql 为mysql安装目录)
cd d:\mysql\bin
mysqladmin -u root -p password 123456
回车出现
Enter password: ( 注:这是叫你输入原密码. 刚安装时密码为空,所以直接回车即可)
此时mysql 中账号 root 的密码 被改为 123456 安装完毕
配置php.ini并测试mysql
找到extension_dir = ./ 改为 extension_dir = e:/php/ext
找到
;extension=php_mysql.dll
将';'去掉改为
extension=php_mysql.dll
找到
;session.save_path = /tmp
将';'去掉 设置你保存session的目录,如
session.save_path = e:/php/session_temp
重启apache服务
在Web根目录下建立testdb.php文件内容如下:
<?php
$link=mysql_connect('localhost','root','123456');
if(!$link) echo fail;
else echo success;
mysql_close();
?>
用浏览器打开http://localhost/testdb.php 如果输出success就OK了
phpmyadmin的安装配置
将phpMyAdmin-V2.6.2-pl1.zip解压到WEB根目录中去,重命名文件夹为phpmyadmin或其它
打开phpmyadmin 目录中的 config.inc.php
找到
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '123456';
分别填上用户名和密码
9. PHP的性能探讨和测试
1.缘起
关于PHP,很多人的直观感觉是PHP是一种灵活的脚本语言,库类丰富,使用简单,安全,非常适合WEB开发,但性能低下。PHP的性能是否真的就如同大家的感觉一样的差呢?本文就是围绕这么一个话题来进陵搏行探讨的。从源码、应用场景、基准性能、对比分析等几个方面深入分析PHP之性能问题,并通过真实的数据来说话。
2.从原理分析PHP性能
从原理分析PHP的性能,主要从以下几个方面:内存管理、变量、函数、运行机制来进行分析。
2.1内存管理
类似Nginx的内存管理方式,PHP在内部也是基于内存池,并且引入内存池的生命周期概念。在内存池方面,PHP对PHP脚本和扩展的所有内存相关操作都进行了托管。对大内存和小内存的管理采用了不同的实现方式和优化,具体可以参考以下文档:
2.2变量
总所周知,PHP是一种弱变量类型的语言,所以在PHP内部,所有的PHP变量都对应成一种类型Zval,其中具体定义如下:
在变量方面,PHP做了大量的优化工作,比如说Reference counting和 on writer机制。这样能够保证内存使用上的优化,并且减少内存拷贝次数(请参考
2.3函数
在PHP内部,所有的PHP函数都回转化成内部的一个函数指针。比如说扩展中函数
ZEND_FUNCTION(my_function);//类似functionmy_function(){}
在内部展开后就会是一个函数
voidzif_my_function(INTERNAL_FUNCTION_PARAMETERS);
voidzif_my_function(intht,
zval*return_value,
zval*this_ptr,
intreturn_value_used,
zend_executor_globals*executor_globals);
从这个角度来看,PHP函数在内部也是对应一个函数指针。
2.4运行机制
在话说PHP性能的时候,很多人都会说“C/C++是编译型,JAVA是半编译型,PHP是解释型”。也就是说PHP是先动态解析再代码运行的,所以从这个角度来看,PHP性能必然很差。
的确,从PHP脚本运行来输出,的确是一个动态解析再代码运行的过程。具体来说,PHP脚本的运行机制如下图所示:
PHP的运行阶段也分成三个阶段:
Parse。语法分析阶段。
Compile。编译产出opcode中间码。
Execute。运行,动态运行进行输出。
所以说,在PHP内部,本身也是存在编译的过程。并且据此产生了大量的opcode cache工具,比如说apc、eacc、xcache等等。这些opcode cache在生产环境基本上在标配。基于opcode cache,能到做到“PHP脚本编译一次,多次运行”的效果。从这点上,PHP就和JAVA的半编译机制非常类似。
所以,从运行机制上来看,PHP的运行模式和JAVA是非常类似的,都是先产生中间码,然后运行在不同虚拟机上。
2.5动态运行
从上面的几个分析来看,PHP在内存管理、变量、函数、运行机制等几个方面都做了大量的工作,所以从原理来看,PHP不应该存在性能尺御祥问题,性能至少也应该和Java比较接近。
这个时候就不得不谈PHP动态语言的特性所带来的性能问题了,由于PHP是动态运行时,所以所有的变量、函数、对象调用、作用域实现等等都是在执行阶段中才确定的。这个从根本上决定了PHP性能中很难改变的一些东西:在C/C++等拆蔽能够在静态编译阶段确定的变量、函数,在PHP中需要在动态运行中确定,也就决定了PHP中间码不能直接运行而需要运行在Zend Engine上。
说到PHP变量的具体实现,又不得不说一个东西了:Hashtable。Hashtable可以说在PHP灵魂之一,在PHP内部广泛用到,包含变量符号栈、函数符号栈等等都是基于hashtable的。
以PHP变量为例来说明下PHP的动态运行特点,比如说代码:
?php
$var=“hello,”;
?
该代码的执行结果就是在变量符号栈(是一个hashtable)中新增一个项
当要使用到该变量时候,就去变量符合栈中去查找(也就是变量调用对出了一个hash查找的过程)。
同样对于函数调用也基本上类似有一个函数符号栈(hashtable)。
其实关于动态运行的变量查找特点,在PHP的运行机制中也能看出一些。PHP代码通过解释、编译后的流程下图:
从上图可以看出,PHP代码在compile之后,产出的了类符号表、函数符号表、和OPCODE。在真正执行的时候,zend Engine会根据op code去对应的符号表中进行查找,处理。
从某种程度上,在这种问题的上,很难找到解决方案。因为这是由于PHP语言的动态特性所决定的。但是在国内外也有不少的人在寻找解决方案。因为通过这样,能够从根本上完全的优化PHP。典型的列子有facebook的hiphop。
2.6结论
从上面分析来看,在基础的内存管理、变量、函数、运行机制方面,PHP本身并不会存在明显的性能差异,但由于PHP的动态运行特性,决定了PHP和其他的编译型语言相比,所有的变量查找、函数运行等等都会多一些hash查找的CPU开销和额外的内存开销,至于这种开销具体有多大,可以通过后续的基准性能和对比分析得出。
因此,也可以大体看出PHP不太适合的一些场景:大量计算性任务、大数据量的运算、内存要求很严格的应用场景。如果要实现这些功能,也建议通过扩展的方式实现,然后再提供钩子函数给PHP调用。这样可以减低内部计算的变量、函数等系列开销。
3.基准性能
对于PHP基准性能,目前缺少标准的数据。大多数同学都存在感性的认识,有人认为800QPS就是PHP的极限了。此外,对于框架的性能和框架对性能的影响很没有响应的权威数字。
本章节的目的是给出一个基准的参考性能指标,通过数据给大家一个直观的了解。
具体的基准性能有以下几个方面:
1.裸PHP性能。完成基本的功能。
2.裸框架的性能。只做最简单的路由分发,只走通核心功能。
3.标准模块的基准性能。所谓标准模块的基准性能,是指一个具有完整服务模块功能的基准性能。
3.1环境说明
测试环境:
Uname -aPnux db-forum-test17.db01..com 2.6.9_5-7-0-0 #1 SMP Wed Aug 12
17:35:51 CST 2009 x86_64 x86_64 x86_64 GNU/Pnux
Red Hat Enterprise Pnux AS release 4 (Nahant Update 3)
8 Intel(R) Xeon(R) CPU E5520 @ 2.27GHz
软件相关:
Nginx:nginx version: nginx/0.8.54 built by gcc 3.4.5 20051201 (Red Hat 3.4.5-2)
Php5:(采用php-fpm)
PHP 5.2.8 (cP) (built: Mar 6 2011 17:16:18)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
with eAccelerator v0.9.5.3, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
bingo2:
PHP框架。
其他说明:
目标机器的部署方式:nginx-php-fpm-php脚本。
测试压力机器和目标机器独立部署。
3.2裸PHP性能
最简单的PHP脚本。
?php
require_once‘./actions/indexAction.php’;
$objAction=newindexAction();
$objAction-init();
$objAction-execute();
?
Acitons/indexAction.php里面的代码如下
?php
classindexAction
{
pubPcfunctionexecute()
{
echo‘hello,world!’;
}
}
?
通过压力工具测试结果如下:
3.3裸PHP框架性能
为了和3.2的对比,基于bingo2框架实现了类似的功能。代码如下
?php
require_once‘Bingo/Controller/Front.php’;
$objFrontController=Bingo_Controller_Front::getInstance(array(‘actionDir’=‘./actions’,));
$objFrontController-dispatch();
压力测试结果如下:
从该测试结果可以看出:框架虽然有一定的消耗,但对整体的性能来说影响是非常小的。
3.4标准PHP模块的基准性能
所谓标准PHP模块,是指一个PHP模块所必须要具体的基本功能:
路由分发。
自动加载。
LOG初始化Notice日志打印。所以的UI请求都一条标准的日志。
错误处理。
时间校正。
自动计算每个阶段耗时开销。
编码识别编码转化。
标准配置文件的解析和调用
采用bingo2的代码自动生成工具产生标准的测试PHP模块:test。
测试结果如下:
3.5结论
从测试数据的结论来看,PHP本身的性能还是可以的。基准性能完全能够达到几千甚至上W的QPS。至于为什么在大多数的PHP模块中表现不佳,其实这个时候更应该去找出系统的瓶颈点,而是简单的说OK,PHP不行,那我们换C来搞吧。(下一个章节,会通过一些例子来对比,采用C来处理不见得有特别的优势)
通过基准数据,可以得出以下几个具体的结论:
1.PHP本身性能也很不错。简单功能下能够达到5000QPS,极限也能过W。
2.PHP框架本身对性能影响非常有限。尤其是在有一定业务逻辑和数据交互的情况下,几乎可以忽略。
3.一个标准的PHP模块,基准性能能够达到2000QPS(80 cpu idle)。
4.对比分析
很多时候,大家发现PHP模块性能不行的时候,就来一句“ok,我们采用C重写吧”。在公司内,采用C/C++来写业务逻辑模块的现象到处都有,在前几年甚至几乎全部都是采用C来写。那时候大家写的真是一个痛苦:调试难、敏捷不要谈。
10. 怎么使用PHPUnit对基于ThinkPHP的代码单元测试
用的tp3.2.3,在框架目录的THinkPHP/Library/Think/Think.class.php的120行,App::run()改为!APP_PHPUNIT&&App::run();,在Home的model目录创建一个test.php(名字随便),写入
_Extensions_Database_TestCase{
/**
*returnPHPUnit_Extensions_Database_DB_IDatabaseConnection
*/
publicfunctiongetConnection()
{
$pdo=newPDO('mysql:host=localhost;dbname=test','root','root');
return$this->createDefaultDBConnection($pdo,'test');
}
/**
*returnPHPUnit_Extensions_Database_DataSet_IDataSet
*/
publicfunctiongetDataSet()
{
return$this->createXMLDataSet(dirname(__FILE__).'/db.xml');
}
publicfunctiontestGetValue()
{
//启动thinkphp
define('APP_PATH',dirname(__FILE__).'/../../../Application/');
//设置标志,防止程序启动,只要加载段烂了框架岁燃桥和类就行
define('APP_PHPUNIT',true);
//引入ThinkPHP入口文件
require_oncedirname(__FILE__).'乎猛/../../../ThinkPHP/ThinkPHP.php';
$testModel=newHomeModelTestModel();
$this->assertEquals(2,$testModel->getValue(1));
}
}