‘壹’ php软件开发中如何提高项目的运行效率
PHP软件开发中如何提高项目的运行效率
如何提高PHP程序执行效率?编程习惯分析,PHP程序原本是解释性程序语言,其执行速度本来就不高,如果在日常开发中不注意编程习惯就很难提高其执行效率,下文从PHP编程和mysql数据效率两个方面分析哪些提高其执行效率的要点PHP软件开发中如何提高项目的运行效率
一、PHP提高效率的要点
1、如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍。
2、$row[’id’] 的速度是$row[id]的7倍。
3、echo 比 print 快,并且使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接,比如echo $str1,$str2。
4、在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替。
5、注销那些不用的变量尤其是大数组,以便释放内存。
6、尽量避免使用__get,__set,__autoload。
7、require_once()代价昂贵。
8、include文件时尽量使用绝对路径,因为它避免了PHP去include_path里查找文件的速度,解析操作系统路径所需的时间会更少。
9、如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用$_SERVER[‘REQUEST_TIME’]要好于time()。
10、函数代替正则表达式完成相同功能。
11、str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的四倍。
12、如果一个字符串替换函数,可接受数组或字符作为参数,并且参数长度不太长,那么可以考虑额外写一段替换代码,使得每次传递参数是一个字符,而不是只写一行代码接受数组作为查询和替换的参数。
13、使用选择分支语句(译注:即switch case)好于使用多个if,else if语句。
14、用@屏蔽错误消息的做法非常低效,极其低效。
15、打开apache的mod_deflate模块,可以提高网页的浏览速度。
16、数据库连接当使用完毕时应关掉,不要用长连接。
17、错误消息代价昂贵。
18、在方法中递增局部变量,速度是最快的。几乎与在函数中调用局部变量的速度相当。
19、递增一个全局变量要比递增一个局部变量慢2倍。
20、递增一个对象属性(如:$this->prop++)要比递增一个局部变量慢3倍。
二、MYSQL数据提高执行效率的要点
1. 为查询缓存优化你的查询
大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了。
这里最主要的问题是,对于程序员来说,这个事情是很容易被忽略的。因为,我们某些查询语句会让MySQL不使用缓存。请看下面的示例:
// 查询缓存不开启 $r = mysql_query("SELECT username FROM user WHERE signup_date >= CURDATE()");
// 开启查询缓存 $today = date("Y-m-d");
$r = mysql_query("SELECT username FROM user WHERE signup_date >= '$today'");
上面两条SQL语句的差别就是 CURDATE() ,MySQL的查询缓存对这个函数不起作用。所以,像 NOW() 和 RAND() 或是其它的诸如此类的SQL函数都不会开启查询缓存,因为这些函数的返回是会不定的易变的。所以,你所需要的就是用一个变量来代替MySQL的函数,从而开启缓存。
2. EXPLAIN 你的 SELECT 查询
使用 EXPLAIN 关键字可以让你知道MySQL是如何处理你的SQL语句的。这可以帮你分析你的查询语句或是表结构的性能瓶颈。
EXPLAIN 的查询结果还会告诉你你的索引主键被如何利用的,你的数据表是如何被搜索和排序的……等等,等等。
挑一个你的SELECT语句(推荐挑选那个最复杂的,有多表联接的),把关键字EXPLAIN加到前面。你可以使用phpmyadmin来做这个事。然后,你会看到一张表格。下面的这个示例中,我们忘记加上了group_id索引,并且有表联接:
18. 越小的列会越快
对于大多数的数据库引擎来说,硬盘操作可能是最重大的瓶颈。所以,把你的数据变得紧凑会对这种情况非常有帮助,因为这减少了对硬盘的访问。
参看 MySQL 的文档 Storage Requirements 查看所有的数据类型。
如果一个表只会有几列罢了(比如说字典表,配置表),那么,我们就没有理由使用 INT 来做主键,使用 MEDIUMINT, SMALLINT 或是更小的 TINYINT 会更经济一些。如果你不需要记录时间,使用 DATE 要比 DATETIME 好得多。
当然,你也需要留够足够的扩展空间,不然,你日后来干这个事,你会死的很难看,参看Slashdot的例子(2009年11月06 日),一个简单的ALTER TABLE语句花了3个多小时,因为里面有一千六百万条数据。
19. 选择正确的存储引擎
在 MySQL 中有两个存储引擎 MyISAM 和 InnoDB,每个引擎都有利有弊。酷壳以前文章《MySQL: InnoDB 还是 MyISAM?》讨论和这个事情。
MyISAM 适合于一些需要大量查询的应用,但其对于有大量写操作并不是很好。甚至你只是需要update一个字段,整个表都会被锁起来,而别的进程,就算是读进程都无法操作直到读操作完成。另外,MyISAM 对于 SELECT COUNT(*) 这类的计算是超快无比的。
InnoDB 的趋势会是一个非常复杂的存储引擎,对于一些小的应用,它会比 MyISAM 还慢。他是它支持“行锁” ,于是在写操作比较多的时候,会更优秀。并且,他还支持更多的高级应用,比如:事务。
下面是MySQL的手册
* target=”_blank”MyISAM Storage Engine
* InnoDB Storage Engine
20. 使用一个对象关系映射器(Object Relational Mapper)
使用 ORM (Object Relational Mapper),你能够获得可靠的性能增涨。一个ORM可以做的所有事情,也能被手动的编写出来。但是,这需要一个高级专家。
ORM 的最重要的是“Lazy Loading”,也就是说,只有在需要的去取值的时候才会去真正的去做。但你也需要小心这种机制的副作用,因为这很有可能会因为要去创建很多很多小的查询反而会降低性能。
ORM 还可以把你的SQL语句打包成一个事务,这会比单独执行他们快得多得多。
‘贰’ 网站采用什么语言好 最好语言是php么
最好是采用PHP语言。
php是网页语言,用于嵌入html代码中,实现较强的逻辑运算功能,是B/S结构的开发语言,用于网页开发中,尽管其语法与C类似,但是它是解释执行的,从编译角度说,是解释型语言(网页开发语言都是解释型的),也就是说,代码写好后,放到网页服务器上就可以直接运行,不必进行编译。另外,它也是弱类型编程语言,使用变量时,不必注意变量的数据类型,而且变量使用前不必进行预先定义,可以直接使用。
C/C++是编译型的语言,用于C/S架构中,源代码需要编译后,才能执行,C/C++常用于需要高速处理,高速执行的场合,如:数值计算、图像处理、单机游戏、网络游戏的客户端、驱动程序、嵌入式开发、操作系统,现在使用的许多单机和绝大部分的网络程序(主要是客户端)都是用C/C++编写的,在高级语言中,C的运行速度是最快的,在面向对象的编程语言中,C++是最快的。C/C++也是强类型语言,变量使用前必须预先定义,从这一点来说,变量的运行效率是高的,但是对于程序员来说,编程的负担就加重了,不够智能化,还有,使用变量时,要考虑变量的数据类型,不同类型的变量混合使用时,需要人工转换,这比较麻烦,也容易犯编程错误。
‘叁’ 怎么理解【前台PHP,中间件用java,底层用C/C++】
通常来说,做一个中小型网站或Web应用不会用多种服务端语言环境。
根据你所需要的网站需求决定要使用的技术架构。
首先PHP不是WEB前台技术(HTML+CSS+JavaScript才是,PHP与Web前端关系不大,这一点很多人都搞不清楚),PHP也是服务端的,说前台PHP个人感觉描述不当,你可以说表层PHP更准确点。PHP是解释性语言,语言灵活、约束少、容错高,即使代码语法上写错了也未必影响整个网站的运行,适合实现低逻辑密度的业务处理。另外PHP的一些成熟框架也是支持插入中间件的。像博客、论坛、门户网站等适合用PHP实现。
Java是一门比较健壮的语言环境,强类型、半编译,可在运行时对自身代码进行认知(反射),Java作为开源热门,用Java编写的实用工具如海洋般广阔,所以利用Struts、Spring等成熟的JavaEE框架可以很方便地将这些工具作为中间层放置到Web应用当中。中间件通常是放置在原始服务端与客户端之间的一个处理层,可能是个程序,也可能是一个服务器(电脑),用于对原始数据进行进一步加工、筛选。Java十分适合制作业务逻辑比较复杂,对安全性、正确性与运行效率要求较高的网站或Web服务。像银行系统、支付平台、在线聊天、网页游戏等适合Java实现。
C/C++是目前大部分操作系统编写时所用的语言,所以用C/C++可以很轻易地接触到操作系统最底层的接口,C/C++很少用于网站或Web服务的开发。另外C/C++的编译是平台相关的,同时也是平台最优化的,所以在复杂数据结构、算法的处理能力上相较于其他语言有很大的优势。像大型网游的服务器可能由C/C++实现。
‘肆’ php跟java有什么区别
PHP和Java是两种完全不同的编程语言,它们有以下几个区别:
语法和编程范式:PHP是一种脚本语言,其语法类似于C语言,主要用于Web开发。而Java是一种面向对象的编程语言,其语法类似于C++,主闷乎誉要用于构建大型应用程序和服务端开发。PHP是一种解顷悄释性语言,而Java则是一蚂段种编译型语言。
执行效率:由于PHP是解释型语言,它的执行速度比Java慢。而Java则是编译型语言,它的执行速度比PHP快。
应用场景:PHP主要用于Web开发,如网站开发、动态网页制作等。而Java则被广泛应用于构建大型应用程序和服务端开发,如企业应用、桌面应用、移动应用等。
社区和生态环境:PHP拥有庞大的开发者社区和丰富的开源项目,如WordPress、Drupal等。而Java则拥有完善的开发工具、框架和中间件,如Spring、Hibernate、Tomcat等。
学习门槛和学习曲线:由于PHP语法简单、易于学习,所以初学者能够较快地上手。而Java则比较复杂,需要掌握更多的知识和技能,学习曲线较为陡峭。
总的来说,PHP和Java是针对不同应用场景和需求的编程语言,开发者应根据实际需求来选择适合自己的编程语言。