PHP 7.0 安装使用与性能监测!(php文件用什么软件打开)

网友投稿 749 2022-09-11

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

PHP 7.0 安装使用与性能监测!(php文件用什么软件打开)

PHP 7.0发布,网上关于新版的介绍很多,介于 7.0 在正式发布之前已经发过若干个 Beta、8个 RC,应该不会出现重大问题。今日我将一台机器升级至 PHP 7.0 并将有关信息记录如下。

本人使用 Ubuntu 12.04 LTS,在网上已经找到 7.0 正式版的 ppa,所以不需要编译,使用如下命令可直接安装。

Redis 安装方法

Memcached 安装方法

Memcached 需要先下载 libmemecached 库才能正常编译。

自己编译的这2个扩展需要手动在配置文件里加载

sudo touch /etc/php/mods-available/redis.inisudo touch /etc/php/mods-available/memcached.ini

并将两个文件内容写上

extension=redis.soextension=memcached.so cd /etc/php/7.0/fpm/conf.dsudo ln -s /etc/php/mods-available/redis.ini ./ sudo ln -s /etc/php/mods-available/memcached.ini ./

如果命令行下需要启用扩展,同样需要在 cli/conf.d 目录下将其链接过去。最后重启服务器

sudo service php7.0-fpm restart

配置文件的调整由于 PHP7.0 最大的改进是性能,所以务必要启用 opcache 保证其能发挥最大作用。将 php.ini 的如下配置启用。

opcache.enable=1opcache.enable_cli=1 opcache.file_cache=/tmp opcache.error_log=/var/log/opcache_errors.log

ppa 安装的包默认 errordisplay 是 off 的。 而且 errorlog 是注释的,意味着出现问题时查看不到任何信息。 因此请写入如下配置

error_log=/var/log/php_errors.logsudo chown www-data.www-data /var/log/php_errors.log

异常处理与解决

在配置完成后,就需要实际的将程序跑一下了。目前将老系统转移到 EN PHP7.0 后,第一个错误就是

09-Dec-2015 12:27:48 Asia/Chongqing] PHP Fatal error: Uncaught Error: Call to undefined function set_magic_quotes_runtime() in /init.php:46

已经不再存在setmagicquotes_runtime 这个函数了。如果要兼容的话需要加上判断

if(PHP_VERSION_ID < 70000){ set_magic_quotes_runtime();}

监控与调优

在这之前更多人会使用 xhprof 来检测和优化系统,但是 xhprof 对整体的程序性能采集样本无法很好的归纳,也没有很好的可视化曲线图和 Web 事务跟踪,导致在短时间内很难对系统瓶颈进行评估。

所以我使用 的 PHP Agent 来完成这些工作, 同样使用定时采样定时汇报的方式来收集性能信息,并且官方宣称耗费资源小于5%。不过对于使用性能提升数倍的 PHP7.0 来部署的话这些损耗可以忽略不计,而且本人只在集群若干机器内部署了一台。

下面介绍基本的性能分析和故常排查方法。

比如可以在 dashboard 中查看到具体某个时间段整个系统的稳定程度,我们在图上看到了一个异常波峰,时间在早上6点左右,通过列表筛选器移除 WEB External 后看图。

当打开详情时可以明显看到,原来是微信的接口在6点钟抽了。同样该页面还可以监控到第三方服务调用的响应情况。比如 217ms 的 api.hitokoto.us 服务。

再简单看一个 SQL 缓慢的监控。

通过 Web 事务的响应时间占比查看到一个脚本执行时间相对过长,通过上图可以看到数据库查询占了579ms

通过切换到详情页面,可以看到整个脚本的调用过程,最终发现是程序 mysqli.php:88 行执行的查询占用了过长的时间。

以上只是通过 持续检查程序稳定性的一个基本方法。

上一篇:如何从 Xcode 控制台输出 JavaScript 的 log?(如何从视频中导出音频)
下一篇:如何写一个计算器?(如何编写一个计算器)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~