有时候,运行nginx和PHP CGI(PHP FPM)web服务的Linux服务器,突然系统负载上升,用top命令查看,很多phpcgi进程的CPU利用率接近100%后来通过跟踪发现,这种情况与PHP的file_get_contents()函数密切相关。

在大中型网站中,基于HTTP协议的API调用比较常见PHP程序员喜欢使用简单方便的file﹣get﹣contents(“http://example.com/”)函数来获取URL的返回内容但是,如果http://example.com/网站响应缓慢,则文件﹣get﹣contents()将始终停留在那里,并且不会超过时间限制。

我们知道,马克斯中有一个参数,它可以指定执行时间,它可以休闲鹿设置PHP脚本的最大执行时间。但是,在PHP CGI(PHP FPM)中,这个参数不起作用PHP FPM.CONF配置文件中的下列参数可以真正控制PHP脚本的最大执行时间:

查看素描?

服务单个请求的超时(以秒为单位),在此之后将终止工作进程

应在“max_execution_time”ini选项因某种原因未停止脚本执行时使用

“0s”表示“off”

<value name=“request\u terminate\u timeout”>0s</value>

默认值为0秒,这意味着PHP脚本将继续执行这样,当所有的PHP CGI进程都被困在file﹣get﹣contents()函数中时,nginx+PHP web服务器将不再处理新的PHP请求,nginx将向用户返回“502坏网关”有必要修改这个参数来设置PHP脚本的最大执行时间,但是没有必要治愈这些症状。例如,更改为<value name=“request﹣terminate﹣timeout>30s</value>如果file﹣get﹣contents()获取网页内容的速度很慢,这意味着150个PHP CGI进程每秒只能处理5个请求,而webserver也很难避免“502坏网关”。

要彻底解决这个问题,PHP程序员只能摆脱直接使用文件“get”内容(“http://example.com/”)的习惯,只需稍微修改一下,添加一个超时,然后按照以下方式实现httpget请求如果遇到问题,可以将以下代码封装到函数中。

PHP常见函数的更多相关文章

  1. 一篇说尽Excel常见函数用法

    一篇说尽Excel常见函数用法 Word,PPT,Excel这三个Office软件是职场办公里最常用的三个软件,但是我发现简书上写PPT的教程多,Excel的少,即使有,也是零零散散.因为Excel的 ...

  2. LoadRunner常见函数分析

    LoadRunner常见函数分析 ?%Ze\N%?~"_J}.t051Testing软件测试网;FQ X%L|GO+R Web用户Action51Testing软件测试网b,Q8iO w1j ...

  3. oracle 统计语句 与常见函数的归纳(未完待续)

    一.统计语句 1. count count(*)与count(0)语句的区别: count(*)统计所有数量 count(0)统计第一列不为空的 2. 两个统计量的减法 select (select ...

  4. [Bullet3]创建世界(场景)及常见函数

    创建世界(场景)及常见函数 官方文档:http://bulletphysics.org 开源代码:https://github.com/bulletphysics/bullet3/releases A ...

  5. 汇编实现: C库常见函数,串操作指令作用

    目录 汇编实现: C库常见函数 一丶汇编实现Strncpy拷贝函数 二丶loads实现Strlen操作. 三丶stos的作用 汇编实现: C库常见函数 一丶汇编实现Strncpy拷贝函数 void _ ...

  6. C++常见函数使用

    备注:总结C++中一些常见函数的使用,提高工作效率 数组的拼接: //报文头的前6B固定 DRV_UCHAR pkt_info_head[PALIVE_TO_NP_LEN] = {0x70, 0xff ...

  7. MYSQL的索引和常见函数

    MySQL的索引 索引机制 MySQL属于关系型数据库,为了提高查询速度,可以创建索引. 索引:由表中的一个或多个字段生成的键组成,这些键存储在数据结构(B树或者hash表中),于是又分为B树索引(I ...

  8. loadrunner——常见函数

    loadrunner——常见函数 分类: LoadRunner 2012-04-11 20:41 703人阅读 评论(0) 收藏 举报 loadrunnersearchweb服务器脚本stringwe ...

  9. SQLite3日期与时间,常见函数

    SQLite3日期与时间,常见函数 import sqlite3 #con = sqlite3.connect('example.db') con = sqlite3.connect(":m ...

  10. MySQL 进阶4 SQL常见函数: 字符函数/数学函数/日期函数/流程控制函数(if/case)

    # 进阶4 SQL常见函数 分类: 1/单行函数: 字符函数: concat(),length(),ifnull(__,default) ,instr(), trim(),upper(),lower( ...

随机推荐

  1. web手工项目01-系统组织框架-测试流程-需求评审-测试计划与方案

    回顾 SVN(定义,作用,使用操作) 软件缺陷(定义,表现形式,原因和根源,基本内容,跟踪流程) JIRA(基本介绍,使用者,工作流,问题,使用) 学习目标 掌握WAMP的环境搭建 掌握熟悉项目的步骤 ...

  2. OO ALV事件里使用E消息,下一步会退出到系统初始界面

    在OO ALV  data_change事件时(选中行),锁定KEY值, 继续,取消选择,退出到系统初始界面 改成 pv_status = 'E'. pv_msg = '采购订单' && ...

  3. thymeleaf自定义属性

    例如我想给添加一个属性data-page,可以根据(SpringEL/Ognl)表达式计算获得. 需求: 期望效果 app个数大于0,有数据时链接 <xxx data-page="/a ...

  4. FastCGI模式下安装Xcache

    PHP执行的时候,会被编译成opcode,然后 zend引擎会执行opcode.也就是说,如果你两次执行同一个php程序,每次执行,他都要把php代码编译成opcodexcache的意义在于,当你第一 ...

  5. 【转】hr的嘴,骗人的鬼

    入职前,从上往下读,入职后,从下往上读. - 我们非常欢迎新鲜血液补充进我们的团队:- 如果条件太苛刻,我待不久的:- 我们公司绝对不可能这样:- 请问每个月的工作都能按时足额发放吗?- 这难道不是理 ...

  6. iOS-GCD处理后台线程和UI线程的交互

    一个例子: 在iPhone上做一个下载网页的功能,就是:在iPhone上放一个按钮,单击按钮时,显示一个转动的圆圈,表示正在进行下载,下载完成后,将内容加载到界面上的一个文本控件上. 使用GCD前: ...

  7. iOS-UITableView的使用

    6.14.1 UITableViewDataSource协议方法初始化数据      //设置组与组之间的间距     self.tableView.sectionHeaderHeight=5;//f ...

  8. maven生命周期及每个阶段自动关联的插件

    生命周期Lifecycle http://maven.apache.org/ref/3.6.1/maven-core/lifecycles.html#default_Lifecycle clean 包 ...

  9. 打开app应用

    =========================================人才网 <!--app底部浮动广告--><style> footer { padding-bo ...

  10. H5本地存储(转)

    H5本地存储  一.本地存储由来的背景         众所周知Html4时代Cookie的大小.格式.存储数据格式等限制,网站应用如果想在浏览器端存储用户的部分信息,那么只能借助于Cookie.但是 ...