PHP常见函数

有时候,运行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请求如果遇到问题,可以将以下代码封装到函数中。

原文地址:https://www.cnblogs.com/blogst/p/11804343.html

时间: 2024-08-09 05:34:26

PHP常见函数的相关文章

C++ 标准库值操作迭代器的常见函数

迭代器是C++标准库中的重要组件,特别是在容器内部,没有迭代器,容器也就无所谓存在了. 例如:vector容器简而言之就是3个迭代器 start finish 以及end_of_storage vector的任何操作都离不开这3个迭代器.. 接下来,总结一下C++ 中的迭代器的操作. C++的迭代器分为5类,依次为 : Input_iterator, output_iterator, forwrd_iterator, bidirectional_iterator 以及  random_acces

常见函数实现

---恢复内容开始--- strcpy实现: char *mycopy(char *strDest,const char *strSrc) { if (strDest == NULL || strSrc == NULL ) { return NULL; } char *strDestCopy = strDest; while ((*strDestCopy++ = *strSrc++) != '\0'); return strDestCopy; } bigint: # include<stdio.

loadrunner——常见函数

loadrunner——常见函数 分类: LoadRunner 2012-04-11 20:41 703人阅读 评论(0) 收藏 举报 loadrunnersearchweb服务器脚本stringweb_url()和web_link()这两个都是页面访问型函数,实现HTTP请求中的GET方法. web_url("在测试结果中要显示的名字","URL=需要访问的超链接地址",LAST); web_link("在测试结果中要显示的名字","

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

目录 汇编实现: C库常见函数 一丶汇编实现Strncpy拷贝函数 汇编实现: C库常见函数 一丶汇编实现Strncpy拷贝函数 void __asmStrncpy(char *des,char *src,int len) { __asm { mov edi,[ebp + 8]; //获取局部变量地址 des mov esi,[ebp + 0xc]; //获取局部变量地址 src mov ecx,len; //使用movs指令,需要给ecx长度 cld //设置DF = 0; 内存方向, 此时e

2字符串常见函数操作

字符串常见函数操作 find() 例:my_str = "hello world" my_str.find("world") 为6,world的首字符下标 rfind 从右边开始找 找不到则返回-1 index同find,但找不到则报错 count 找字符串的次数 replace() my_str = "hello world world" my_str.replace("world","haha")结果为

Python基础-list列表及常见函数

list列表是Python内置的一种数据类型,本质是一种有序的集合,这里将会讲到list的具体的一些用法以及常见的函数 创建列表语法:列表名 = [元素1,元素2,元素3-元素n] 说明:列表中的选项被称为元素,跟string类似,下标也是从0开始计数,一个列表中的数据类型可以各不相同. 创建列表代码如下: #创建空列表list1 = []#创建带有元素的列表list2 = [10, 20, 30, 10]print(list2) #[10, 20, 30, 10]list3 = [33, "g

Mysql常见函数

#常见函数/*调用:select 函数名(实参列表) [from 表]; 特点:1.叫什么(函数名)2.干什么(函数功能) 分类: 1.单行函数 如 concat, length, ifnull等 2.多行函数 功能:做统计使用,又称为统计函数,聚合函数,组函数 */ 字符函数: #lengthSELECT LENGTH("Enoch"); #返回5SELECT LENGTH("伊诺克"); #返回9SHOW VARIABLES LIKE '%char%'; #co

JAVA常见函数

输入函数 : Scanner cin=new Scanner(System.in); int a=cin.nextInt();    //输入一个int数据 double dl=cin.nextDouble();  //输入一个double数据 cin.hasNextInt()/ cin.hasNextDouble()   //检测扫描器中是否还有**类型数据 其他数据的输入也可以这样暂时只会点皮毛= = 输出就是无脑 System.out.println()确实方便. 字符串转换函数,将字符串

【转】C++ 标准库值操作迭代器的常见函数

迭代器是C++标准库中的重要组件,特别是在容器内部,没有迭代器,容器也就无所谓存在了. 例如:vector容器简而言之就是3个迭代器 start finish 以及end_of_storage vector的任何操作都离不开这3个迭代器.. 接下来,总结一下C++ 中的迭代器的操作. C++的迭代器分为5类,依次为 : Input_iterator, output_iterator, forwrd_iterator, bidirectional_iterator 以及  random_acces

Linux下的socket编程实践(四)TCP服务端优化和常见函数

并发下的僵尸进程处理 只有一个进程连接的时候,我们可以使用以下两种方法处理僵尸进程: 1)通过忽略SIGCHLD信号,避免僵尸进程 在server端代码中添加 signal(SIGCHLD, SIG_IGN); 2)通过wait/waitpid方法,解决僵尸进程 signal(SIGCHLD,onSignalCatch); void onSignalCatch(int signalNumber) { wait(NULL); } 那么如果是多进程状态下多个客户端同时关闭呢? 我们可以用下面的客户端