您的位置:

首页 >

365体育备用网址 >

PHP 七大优势分析 >

PHP 七大优势分析

2016-08-25 03:13:41

分类:365体育备用网址

虽然ASP是一种不错的技术,但从长远考虑我相信PHP在将来的技术领域里会有不凡的表现。  我认为有七个理由可以说明PHP比ASP更优秀:  1、速度、速度、速度  当我第一次运行PHP脚本程序时,我不禁对自己说:“太快了”,当时我是在仪态166MHZ的机器上运行我的程序的,但运行的速度仍然很快。  ASP是永远也不会象PHP这样快的,因为ASP是建立在COM体系结构之上的。当用VBScript写ASP脚本时,实际上实在使用COM的对象,当向用户浏览器发送信息时,它用的是Response对象的write方法,当它访问数据库和文件系统的时候,它用的是其他的COM对象。这些COM对象的使用使运行速度下降。  在PHP代码中,所有的工作都运行在PHP的内存空间中,也就是说PHP不是基于COM对象的,所以的他的运行速度会快一些。  下面是我们在MSSQL7 40次运行一个查询语句的执行时间统计:  PHP Querying MSSQL7 时间(秒)  用 MSSQL extension 01.88  用 ODBC extension 09.54  用 ODBC via COM (ADO) 17.28  用 OLEDB via COM 06.19  当我们使用PHP.ODBC,访问数据库用了9.54秒,而用COM接口去连接数据库需要比PHP所用的时间高80%。  OLEDB是微软的一种高速访问数据库的技术,他比ODBC要快。但当我们所PHP和OLEDB的效率实验时,结果是PHP的整体性能比OLEDB高200%,如此的出一个结论,如果不采用COM可以获得较快的执行速度。  当然PHP的执行速度还不是最快的,但我们才刚刚开始起步,我们会逐步的完善他,而且PHP是一种开放源代码编程语言,世界上许多程序员在不断的完善他的技术,相信他一定会比非开放源代码系统获得更高的执行速度的。  2、高级内存管理  在IIS4下,一个ASP脚本header.asp,如果被20个页面所包含,那么运行的时候,在内存当中会保留这20个header.asp的编译副本,IIS5解决了这个问题,但只有windows2000才支持IIS5,由于这种IIS5的不能向下兼容的原因,许多服务器仍然要使用IIS4下的低级的内存管理。  而在PHP中,不会存在这种问题,只有当require时,才会调用某个include文件。3、没有后顾之忧  我非常憎恨的一件事情就是会买到一件不放心的产品,比如当你买了一辆汽车,但由于发动机是坏的,你需要更换他;当你买了一栋房子的时候,你要去修补漏雨的屋顶。  那么ASP旧乡这些产品一样,当你买了ASP之后,如果你需要加密技术,你就要买ASPEncrypt;当你需要Email管理时,你就要买ServerObjets Qmail;当你需要文件上传时,你还要买Artisans SA-FileUp.  4、MySQL使PHP更精彩  PHP与MySQL的组合既简单又精彩。PHP有许多管理和维护MySQL的工具,对MySQk的支持是最全面的。许多有用的函数如mysql_insert_id和mysql_affected_rows等,其他的数据库则没有。  ASP和PHP都是中型网站的较理想的解决方案,但PHP与MySQL的紧密结合使PHP更加优越。  MySQL的虚度比Microsoft Access速度快,Mssql和Oracle速度比MySQL要快,可是费用较高。  5、Java和C++的变成风格  这个优点只是一个看法。  我知道你不会相信一个Visual Basic程序员会因为PHP有Java和C++的编程风格而转向使用PHP,但你会相信有许多人还是喜欢Java和C++的,PHP是一种具有这两种语言的编程风格的较容易学习的语言。  PHP支持结构化编程,在VB因为他的继承性使用类还是较少的。而PHP的象Java和C++一样的继承性使一个大型的程序中到处都充满了类的影子。  6、Bug的处理  你是否曾经要求Microsoft修改ASP的一些Bug呢?如果你不是一个象Boeing一样的组织,你无法获得迅速而恰当的修改,把么当你遇到Bug而停止工作时,如果这个Bug不修改,你将无法继续你的工作的。  PHP,当你发现Bug时,你可以修改他,如果你没有专家的水平,你可以请专家修改,并且你的修改会得到开放代码组织的接受和认可。  7、移植性  Microsoft经常修改ASP,下一版本叫ASP+,现在已经开始测试。我相信他们会修改许多我曾经提到过的问题。但也无庸质疑的,Microsoft会将你限制在他们的产品范围之内的。  我曾经是一个苹果机的程序员,当windows95问世后,我开始转变,但许多原来的代码都无法在windows95下运行,这些代码现在被放在一边,我非常的遗憾。所以我不希望在windows下再出现这样的悲剧。  不要忘记Novell曾经也象Microsoft的网络操作系统一样热及一时,但现在已经没有许多人用了,那么Microsoft也会这样的。  我找到了PHP,我仍旧在windows下工作,但我知道PHP代码可以运行在Solaris、Linux和许多其他的操作系统中,

复制代码 代码如下:function encode_pass($tex,$key,$type="encode"){    $chrArr=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',                  'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',                  '0','1','2','3','4','5','6','7','8','9');    if($type=="decode"){        if(strlen($tex)<14)return false;        $verity_str=substr($tex, 0,8);        $tex=substr($tex, 8);        if($verity_str!=substr(md5($tex),0,8)){            //完整性验证失败            return false;        }        }    $key_b=$type=="decode"?substr($tex,0,6):$chrArr[rand()%62].$chrArr[rand()%62].$chrArr[rand()%62].$chrArr[rand()%62].$chrArr[rand()%62].$chrArr[rand()%62];    $rand_key=$key_b.$key;    $rand_key=md5($rand_key);    $tex=$type=="decode"?base64_decode(substr($tex, 6)):$tex;    $texlen=strlen($tex);    $reslutstr="";    for($i=0;$i<$texlen;$i++){        $reslutstr.=$tex{$i}^$rand_key{$i%32};    }    if($type!="decode"){        $reslutstr=trim($key_b.base64_encode($reslutstr),"==");        $reslutstr=substr(md5($reslutstr), 0,8).$reslutstr;    }    return $reslutstr;}$psa=encode_pass("phpcode","taintainxousad");echo $psa;echo encode_pass($psa,"taintainxousad",

一副1024*768大小的图片,裁剪到240*240大小,裁剪后不失真,尽可能保留图片主题含义。我使用到的方法:1. 先将图片等比例缩略到可以裁剪的大小;如果是宽幅图片,则按高度等比例缩放到高度 = 240px,窄幅图片(高度大于宽度)则按宽度等比例缩放;2. 按长宽格式居中裁剪;保留缩略后的图片中间部分;复制代码 代码如下:$this->load->library('image_lib');                list($width,

flush函数:刷新输出缓冲ob_clean函数:清空输出缓冲ob_end_clean函数:清空缓冲区并且关闭正在进行的输出缓冲ob_end_flush函数:发送缓冲区数据并且关闭缓冲区ob_flush函数:发送缓冲区数据ob_get_clean函数:获取缓冲区内容并且结束缓冲区ob_get_contents函数:获取缓冲区数据ob_get_flush函数:刷新缓冲区数据,返回数据并且关闭缓冲区ob_get_length函数:获取缓冲区长度ob_get_level函数:获取缓冲区等级ob_get_status函数:获取缓冲区状态ob_gzhandler函数:供ob_start使用的回调函数用来压缩输出缓冲区ob_implicit_flush函数:打开或者关闭原本固有的输出缓冲区ob_list_handlers函数:列出所有使用的输出句柄ob_start函数:打开缓冲区output_add_rewrite_var函数:添加URL rewrite的值output_reset_rewrite_vars函数:重置URL rewrite的值PHP信息获取类函数assert函数:检查assertion声明是否错误extension_loaded函数:检查PHP扩展是否加载get_cfg_var函数:获取PHP配置选项的值get_current_user函数:获取当前PHP脚本的所有者的名称get_defined_constants函数:返回一个包含PHP预定义常量信息的数组get_extension_funcs函数:返回一个包含指定模块中的所有函数名称的数组get_include_path函数:返回当前配置的文件包含路径的信息get_included_files函数:返回一个关于文件包含信息的数组get_loaded_extensions函数:返回一个包含所有装载模块信息的数组get_magic_quotes_gpc函数:获取magic_quotes_gpc的状态信息get_magic_quotes_runtime函数:获取magic_quotes_ runtime的状态信息get_required_files函数:返回一个关于文件包含信息的数组getenv函数:获取PHP环境变量的值getlastmod函数:获取当前PHP页面文件的最后修改时间getmygid函数:获取当前PHP脚本页面所有者的GID号码getmyinode函数:获取当前PHP脚本页面的INODE号码getmypid函数:获取PHP的PIDgetmyuid函数:获取PHP脚本页面所有者的UID号码getopt函数:从命令行参数列表获取设置getrusage函数:获取当前的资源语法ini_get_all函数:获取所有配置选项ini_get函数:获取配置选项的值memory_get_usage函数:返回PHP脚本占用的内存空间php_ini_scanned_files函数:返回配置文件目录下的配置文件列表php_logo_guid函数:获取LOGO图片的GUIDphp_sapi_name函数:获取PHP和Web服务器之间的接口类型php_uname函数:获取PHP脚本运行的操作系统信息phpcredits函数:打印credits列表phpinfo函数:输出PHP的信息phpversion函数:获取PHP版本zend_logo_guid函数:获取ZEND的LOGO图片的GUIDzend_version函数:获取ZEND引擎的版本PHP配置类函数assert_options函数:设置或者获取不同的声明标记ini_alter函数:设置PHP配置选项的值ini_restore函数:恢复配置选项的值ini_set函数:设置PHP配置选项的值putenv函数:设置环境变量restore_include_path函数:恢复文件包含路径配置信息set_include_path函数:设置文件包含路径配置选项set_magic_quotes_runtime函数:设置magic_quotes运行时间set_time_limit函数:设置最大执行时间dl函数:加载PHP的扩展模块main函数:只是一个挂名的main()函数version_compare函数:

调用追踪器的方法复制代码 代码如下:$Profiler = $Db -> getProfiler();复制代码 代码如下:<?php/*追踪器的使用方法*///引入Loader类(自动加载类)require_once("Zend/Loader.php");//使用Loader类引入一个Db类Zend_Loader::loadClass("Zend_Db");//引入Zend_Db的状态器Zend_Loader::loadClass("Zend_Db_Statement_Pdo");//配置数据库连接信息$Config = array('host' => '127.0.0.1' ,    'username' => 'root' ,     'password' => '111' ,     'dbname' => 'test',    'profiler' => "true"    );//告诉Zend_Db类所操作的数据库和数据库配置信息$Db = Zend_Db::factory('PDO_Mysql' , $Config); //执行编码语句 $Db -> query("set names utf8");//-----------------------------------------------------$Sql = "select * from gongsi";$Db -> query($Sql);//调用追踪器的方法$Profiler = $Db -> getProfiler();//获取提交语句的条数echo "提交的个数:" . $Profiler -> getTotalNumQueries() . "<br>";//获取SQL语句执行的信息$Result = $Profiler -> getQueryProfiles();foreach ($Result as $key => $value) { //输出运行过的语句 echo "文本内容为:" . $value->getQuery() . "<br>"; //输出运行语句所花费的时间 echo "花费时间为:" . $value->getElapsedSecs() . "<br>";}//输出所有语句花费的总时间echo "花费的总时间为:" . $Profiler -> getTotalElapsedSecs();?

焦点访谈

最新最热的文章

更多 >

COPYRIGHT (©) 2017 Copyright ©2017 365体育在线备用网址 网站地图

联系我们

827570882

扫描二维码分享到微信