㈠ 如何让 php 性能问题不再饱受诟病
单台服务器性能始终有极限,最好就是做分布式,把流量分摊到多台服务器。 数据库也可以做读写分离,所有大型网站都是这么构架的。
㈡ 请问为什么PHP的性能比java的servlet性能好
很多Java EE应用服务器的组件比较庞大,优化也不够。
很多JSP/servlet的开发者对java和算法不通,滥用字符串处理数据。写出来的代码效率极低。
导致同样的实现不可能比PHP慢的Java写出来的东西反而比PHP慢。
总之,比PHP慢是因为人不行。
㈢ python与php哪个性能高
语法:PHP 的语法看起来就像没有经过精心设计一样,很随意。有的语法看似很方便(用点来连接字符串), 但是却为之后扩展造成了很多麻烦(点没法用于访问对象的成员), 再比如比较蛋疼的命名空间的语法。Python 相比之下要好一点,但是 Python2 和 Python3 直接存在着一些不兼容的语法变动。
编写 HTML 模版:PHP 可以非常方便地直接用来编写 HTML 模版,Python 需要借助其他的语言或库来实现。
包管理器:PHP 的包管理器(PEAR)和扩展管理器(PECL)恐怕根本没人用,这导致引入一个新依赖的成本很高,于是很多人倾向于自己造轮子而不是引入现成的库。Python 有统一的包管理器,虽然也有问题,但要比 PHP 好得多,引入库之后的命名空间管理也要比 PHP 好。
扩展和库:PHP 和 Python 都可以用 C 来编写扩展。相比之下 Python 可用的库要更多一点。
运行方式:PHP 运行方式比较单一(php-fpm, mod_php), Python 则可以以 fastCGI 运行,也可以自行监听端口来处理请求。
性能:因为 PHP 运行方式单一,opcode 缓存方案也比较成熟(APC, opcache),缓存 opcode 之后运行速度很快。Python 则可能需要更多地自行优化性能。
类型系统:PHP 和 Python 都是动态类型。PHP 对类型判别比较模糊,有很多陷阱,Python 则严格一些。
学习成本:PHP 和学习成本都不是很高。PHP 优势在于有比较完整的官方中文文档,而且 PHP 应用领域只有 Web, 所以需要学习的内容较少。Python 因为学习路线较多,不太容易找到适合自己的教程和资料。
社区:PHP 的资料遍地,但是高质量的中文社区较少,普遍对官方的新功能不是很关注。Python 则要好一点。
应用领域:PHP 仅在 Web 后端方面被使用,Python 应用领域更广泛一点,如果需要将逻辑移植到其他平台(如桌面), Python 要方便一点。
㈣ php性能优化的几个方法
面对一个性能问题是,第一步永远是找到问题产生的原因,而不是去看技巧列表。搞明白产生瓶颈的原因,找到目标并且实施修复,然后再重新测试。查找瓶颈只是万里长征的第一步,这里有些常用技巧,希望对最重要的第一步找到瓶颈能有所帮助。
使用监控方法(比如监控宝),进行benchmark和监控,网络,特别是网络状况瞬息万变,做得好的话5分钟就可以找到瓶颈。
剖析代码。必须了解那部分代码耗时最多,在这些地方多多关注。
想找到瓶颈,请检查每个资源请求(比如,网络、CPU、内存、共享内存、文件系统、进程管理、网络连接等等……)
先对迭代结构和复杂的代码进行benchmark
在在真实负载下用真实数据进行真实测试,当然,如果可以最好用产品服务器。
缓存
(Caching)
有些人认为缓存是解决性能问题最有效的办法之一,试试这些:
使用OPCODE(操作码)缓存,这样脚本就不会在每次访问时重新编译一次。比如:启用Windows平台上的windows缓存扩展。可以缓存opcode,文件,相对路径,session数据和用户数据。
考虑在多服务器环境下使用分布式缓存
在调用imap_header()之前先调用imap_headers()
编译
vs. 解释(Compiling vs. Interpreting)
将PHP源码编译成机器码。动态解释执行同样的编译,但它是按行执行的。编译为opcode是折中选择,它可以将PHP源码翻译为opcode,之后opcode再转为机器码。以下为关于编译与解释的相关技巧:
上线之前将PHP代码编译为机器码。opcode缓存尽管并不是最好的选择,但依旧比解释型来得强。或者,考虑将PHP代码编译成一个C扩展。
PHP的opcode编译器(bcompiler)还不能在产品环境中使用
㈤ php性能更好的去重和是否存在
去重
很多时候操作数组去重,一般使用array_unique()函数,但是在大数组的情况下运行地慢一些
更好的方式:
//把数组的键值交换过来,因为数组的健不能重复,就实现了去重
$array = array('a', 'b', 'c', 'a', 'd');
$array = array_flip($array);
//修复数组键值序列
$array = array_keys($array)
//再把数组的键值交换回来
$array = array_flip($array);
判断是否存在
一般情况下判断一个值是否已在在数组中in_array(), in_array()性能不太好
更好的方式
$array = array('a', 'b', 'c', 'd');
if (isset(array_flip($array)['a'])){
};
㈥ php7.4性能如何
参考一下这篇文章
https://www.oschina.net/news/106908/php-7-4-early-benchmarks?p=2
㈦ 怎样测试PHP的性能
/**
计时和内存占用检测
参数:
$o:bool型,取值[TRUE;FALSE]
说明:
主要用来计算网站的记忆体和执行时间
记忆体占用的部份可能会不够准确,不准确时显示0
返回:
输出记忆体占用值和执行时间
用法:
Fun::Sys();
echoFun::Sys(TRUE);
PHP群:223494678
/**/
publicstaticfunctionSys($o=FALSE){
static$t1,$m1;
if(!$o){
$t1=function_exists('microtime')?microtime():0;
$m1=function_exists('memory_get_usage')?memory_get_usage():0;
return;
}unset($o);
$t2=function_exists('microtime')?microtime():0;
$m2=function_exists('memory_get_usage')?memory_get_usage():0;
$t1=explode('',$t1);
$t2=explode('',$t2);
$t2=sprintf("%.2fms",($t2[1]+$t2[0]-$t1[1]-$t1[0])*1000);
$m2-=$m1;$m2=($m2<0)?0:$m2;
$m2=($m2>=1024)?round($m2/1024,2).'Kb':$m2.'byte';
unset($t1,$m1);
return'<br>Mem:'.$m2.' Time:'.$t2;
}
㈧ PHP的优缺点是什么
HP应该算是现在大中小非专业网站企业会优先使用的网站建设编程语言,相对于ASP和JSP来说,PHP在在很多方面更适合个人以及小型企业做开发,这主要是因为PHP本身独特的优势导致的,那么下面小编就来为大家盘点PHP得到众多企业支持的原因。
PHP的优势包括:
1、开放源代码
由于PHP开放源代码,因此基本上可以在网络上找到适合自己的源代码。
2、免费性
和其它技术相比,PHP本身免费,并且也是开源代码。
3、快捷性
PHP程序开发快,运行快,技术本身学习快。由于PHP可以被嵌入于HTML语言,新词相对于其他语言来说编辑简单,实用性强,更适合初学者。
4、跨平台性强
由于PHP是运行在服务器端的脚本,因此可以在多种平台上得到应用,包括了UNIX、LINUX、WINDOWS、Mac OS等系统。
5、效率高
PHP由于消耗相当少的系统资源,因此工作效率更高。
6、图像处理
一般来说,PHP动态创建图像,而且目前PHP图像处理默认使用GD2。因此也可以配置为使用image magick进行图像处理。
7、面向对象
在PHP4,PHP5 中,面向对象方面都做出了很大的改进,因此PHP完全可以用来开发大型商业程序。
8、专业专注
PHP同为类C语言,而且更重要的就是PHP以支持脚本语言为主。
上面介绍的八点内容就是关于PHP被广大企业使用的优势,其实PHP相对于其它几种语言来说,更适合初学者学习和使用,因此想要入门的朋友可以多找一些材料来学习。
㈨ php7 性能怎么提升
1.用单引号来包含字符串要比双引号来包含字符串更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会。
2.如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍。
3.$row['id'] 的速度是$row[id]的7倍。
4.echo 比 print 快,并且使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接,比如echo $str1,$str2。
5.在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替。
6.注销那些不用的变量尤其是大数组,以便释放内存。
7.尽量避免使用__get,__set,__autoload。
8.require_once()代价昂贵。
9.include文件时尽量使用绝对路径,因为它避免了PHP去include_path里查找文件的速度,解析操作系统路径所需的时间会更少。
10.如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用$_SERVER[‘REQUEST_TIME']要好于time()。
11.函数代替正则表达式完成相同功能。
12.str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的四倍。
13.如果一个字符串替换函数,可接受数组或字符作为参数,并且参数长度不太长,那么可以考虑额外写一段替换代码,使得每次传递参数是一个字符,而不是只写一行代码接受数组作为查询和替换的参数。
14.使用选择分支语句(译注:即switch case)好于使用多个if,else if语句。
15.用@屏蔽错误消息的做法非常低效,极其低效。
16.打开apache的mod_deflate模块,可以提高网页的浏览速度。
17.数据库连接当使用完毕时应关掉,不要用长连接。
18.错误消息代价昂贵。
19.在方法中递增局部变量,速度是最快的。几乎与在函数中调用局部变量的速度相当。
20.递增一个全局变量要比递增一个局部变量慢2倍。
21.递增一个对象属性(如:$this->prop++)要比递增一个局部变量慢3倍。
㈩ 如何优化PHP性能
如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍。
当然了,这个测试方法需要在十万级以上次执行,效果才明显。
其实静态方法和非静态方法的效率主要区别在内存:静态方法在程序开始时生成内存,实例方法在程序运行中生成内存,所以静态方法可以直接调用,实例方法要先成生实例,通过实例调用方法,静态速度很快,但是多了会占内存。
任何语言都是对内存和磁盘的操作,至于是否面向对象,只是软件层的问题,底层都是一样的,只是实现方法不同。静态内存是连续的,因为是在程序开始时就生成了,而实例申请的是离散的空间,所以当然没有静态方法快。
静态方法始终调用同一块内存,其缺点就是不能自动进行销毁,而是实例化可以销毁。