北京网站制造公司排名 (北京网站制造-PHP)

文章编号:5884 更新时间:2024-01-02 分类:互联网资讯 阅读次数:

资讯内容

PHP-CGI进程CPU100%与file_get_contents函数的相关

北京网站制造公司排名北京网站制造PHP

有时,运转nginx和PHP-CGI(php-fpm)网络服务的Linux主机突然产生系统负载参与。经常使用top命令检查,很多php-cgi进程的CPU占用率凑近100%。起初经过跟踪发现,这种状况的产生与PHP的file_get_contents()函数亲密相关。(北京网站树立)

在大中型网站中,基于HTTP协定的API接口调用习认为常。PHP程序员青睐用简双繁难的file_get_contents('http://example.com/')函数来失掉一个URL的前往内容,然而假设http://example.com/网站照应慢,file_get_contents()会不时卡在那里,不会暂停。

咱们知道在php.ini中,有一个参数max_execution_TIME可以设置PHP脚本的最长口头期间,然而在php-cgi(php-fpm)中,这个参数是不会失效的。真正管理PHP脚本最大口头期间的是php-fpm.conf性能文件中的以下参数:

作为单个恳求服务的超时(以秒为单位),之后上班进程将被中断

应在max_execution_timeini选项因某种要素未中止脚本口头时经常使用

0s示意封锁

0s/值

自动值为0秒,即PHP脚本将永远口头。这样,当一切的php-cgi进程都卡在file_get_contents()函数中时,这个Nginx+PHPWebServer就不能再处置新的PHP恳求,Nginx就会前往502BadGateway给用户。须要修正该参数来设置PHP脚本的最大口头期间,但治标不治标。比如改成30s,假设file_get_contents()失掉网页内容慢,说明150个php-cgi进程每秒只能处置5个恳求,WebServer也很难防止502Bad网关。

要成功完整的处置打算,PHP程序员只能改掉间接经常使用file_get_contents('http://example.com/')的习气,而是稍微修正一下,加个timeout,依照上方的模式成功HTTPGET恳求。假设感觉费事,可以自己将上方的代码封装成一个函数。

="tag-name">php

当然,造成php-cgi进程CPU100%的要素不仅有这一种,那么,怎样确定是file_get_contents()函数造成的呢?

首先,经常使用top命令检查CPU经常使用率较高的php-cgi进程。

找其中一个CPU100%的php-cgi进程的PID,用以下命令跟踪一下:

假设屏幕显示:

那么,就可以确定是file_get_contents()造成的疑问了。

咱们专一上流建站,小程序开发、软件系统定制开发、BUG修复、物联网开发、各类API接口对接开发等。十余年开发阅历,每一个名目承诺做到满意为止,多一次性对比,必定让您多一份收获!

标签: CGI进程CPUPHP北京网站制造100%与filecontents函数的相关get

本文地址: https://yihaiquanyi.com/article/9a6f41b93f71dc6c6125.html

上一篇:北京网站制造公司排名北京网站制造PHP罕用...
下一篇:PHP查询MySQL数据库里面指定的数据PHP查询M...

发表评论