PHP http请求超时问题解决方案


Posted in PHP onNovember 13, 2020

一,http请求超时时间

可能出现的场景:

1,curl进程运行了一个世纪还木结束,curl的时候设置了超时时间 --connect-timeout 1000

2,operation timed out after 1000 milliseconds with 0 bytes received

3,connect() timed out!

wget对超时时间, 是有分阶段的, 比如说请求的超时, 传输的超时,同样HTTP请求有两个超时时间:一个是连接超时时间,另一个是数据传输的最大允许时间,出现问题就要看是哪个超时时间出问题了。

curl命令行
连接超时时间用 --connect-timeout 参数来指定,数据传输的最大允许时间用 -m 参数来指定,时间是毫秒

例如:

curl --connect-timeout 10 -m 20 "http://***"

连接超时的话,出错提示形如:

curl: (28) connect() timed out!

数据传输的最大允许时间超时的话,出错提示形如:

curl: (28) Operation timed out after 2000 milliseconds with 0 bytes received

使用PHP的curl_init

<?php // create a new cURL resource $ch = curl_init(); // set URL and other appropriate options curl_setopt($ch, CURLOPT_URL, "http://www.example.com/"); curl_setopt($ch, CURLOPT_HEADER, 0);

//连接超时时间 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1000);

//数据传输的最大允许时间 curl_setopt($ch, CURLOPT_TIMEOUT, 1000); // grab URL and pass it to the browser curl_exec($ch); // close cURL resource, and free up system resources curl_close($ch);

//使用curl_error($ch)查看错误的详情 var_dump(curl_error($ch));

二,页面执行时间

当你的页面有大量数据时,建议使用set_time_limit()来控制运行时间,配置该页最久执行时间。

设定一个程式所允许执行的秒数,如果到达限制的时间,程式将会传回错误,时间是秒单位。

php.ini:它预设的限制时间是30秒,max_execution_time的值定义在结构档案中,如果将秒数设为0,表示无时间上的限制,修改后重新启动apache/nginx服务器

php代码:set_time_limit(800);

这个函数指定了当前所在php脚本的最大执行时间为800秒,实际上最大执行时间=php.ini里的max_execution_time数值 - 当前脚本已经执行的时间 + 设定值

假如php.ini里的max_execution_time=30,当前脚本已经执行5秒,则:

最大执行时间=30-5+800=825秒。

注意 : 当PHP是执行在安全模式时,set_time_limit( )将不会有结果,除非是关闭安全模式或是修改结构档案中的时间限制。

三,php长连接

如果我们需要一个脚本持续的运行,那么我们就要通过php长连接的方式,来达到运行目的。通过 set_time_limit 来设置一个脚本的执行时间为无限长;然后使用 flush() 和 ob_flush() 来清除服务器缓冲区,随时输出脚本的返回值。

如下面这段脚本:

<?php
header("Content-Type: text/plain");
set_time_limit(0);
$infoString = "Hello World" . "\n";
while( isset($infoString) )
{
  echo $infoString;
  flush();
  ob_flush();
  sleep(5);
}
?>

当我们执行后,每隔5秒钟,我们会得到一行 Hello World ,如果不按停止按钮,浏览器会不停的一行一行继续加载。

通过这一方法,我们可以完成很多功能,例如机器人爬虫、即时留言板等程序。

如果要停止运行只能重启php-fpm:

查看php-fpm进程数:

ps aux | grep -c php-fpm

查看运行内存

/usr/bin/php -i|grep mem

重启php-fpm

/etc/init.d/php-fpm restart

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
Mar 16 PHP
PHPnow安装服务[apache_pn]失败的问题的解决方法
Sep 10 PHP
PHP中的gzcompress、gzdeflate、gzencode函数详解
Jul 29 PHP
php计算函数执行时间的方法
Mar 20 PHP
深入理解PHP中的Streams工具
Jul 03 PHP
Smarty环境配置与使用入门教程
May 11 PHP
注释PHP和html混合代码的小技巧(分享)
Nov 03 PHP
YII框架中搜索分页jQuery写法详解
Dec 19 PHP
Laravel框架模板加载,分配变量及简单路由功能示例
Jun 11 PHP
CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
Feb 28 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
Aug 06 PHP
PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
Dec 12 PHP
PHP dirname简单使用代码实例
Nov 13 #PHP
PHP mkdir创建文件夹实现方法解析
Nov 13 #PHP
PHP接入支付宝接口失效流程详解
Nov 10 #PHP
基于PHP实现用户在线状态检测
Nov 10 #PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
Nov 10 #PHP
PHP safe_mode开启对于PHP系统函数有什么影响
Nov 10 #PHP
通过PHP实现用户注册后邮箱验证激活
Nov 10 #PHP
You might like
Windows中安装Apache2和PHP4权威指南
2006/11/18 PHP
PHP 生成的XML以FLASH获取为乱码终极解决
2009/08/07 PHP
windows7配置Nginx+php+mysql的详细教程
2016/09/04 PHP
Js点击弹出下拉菜单效果实例
2013/08/12 Javascript
JavaScript中访问节点对象的方法有哪些如何使用
2013/09/24 Javascript
Asp.Net alert弹出提示信息的几种方法总结
2014/01/29 Javascript
鼠标滑过出现预览的大图提示效果
2014/02/26 Javascript
JavaScript中获取高度和宽度函数总结
2014/10/08 Javascript
JS实现光滑展开合拢的菜单效果代码
2015/09/16 Javascript
探究Vue.js 2.0新增的虚拟DOM
2016/10/20 Javascript
详解angular2封装material2对话框组件
2017/03/03 Javascript
用vue构建多页面应用的示例代码
2017/09/20 Javascript
jQuery.extend 与 jQuery.fn.extend的用法及区别实例分析
2018/07/25 jQuery
vuejs router history 配置到iis的方法
2018/09/20 Javascript
vue组件之间数据传递的方法实例分析
2019/02/12 Javascript
react 组件传值的三种方法
2019/06/03 Javascript
深入学习JavaScript 高阶函数
2019/06/11 Javascript
详解如何提升JSON.stringify()的性能
2019/06/12 Javascript
JS实现简单移动端鼠标拖拽
2020/07/23 Javascript
Vue 组件注册全解析
2020/12/17 Vue.js
JavaScript中clientWidth,offsetWidth,scrollWidth的区别
2021/01/25 Javascript
[01:25]DOTA2自定义游戏灵园鬼域等你踏足
2015/10/30 DOTA
Python实现PS图像调整之对比度调整功能示例
2018/01/26 Python
Python的numpy库中将矩阵转换为列表等函数的方法
2018/04/04 Python
Python设计模式之解释器模式原理与用法实例分析
2019/01/10 Python
python实现爬虫抓取小说功能示例【抓取金庸小说】
2019/08/09 Python
Python中的上下文管理器相关知识详解
2019/09/19 Python
Python 转换RGB颜色值的示例代码
2019/10/13 Python
Python自动化xpath实现自动抢票抢货
2020/09/19 Python
IE支持HTML5的解决方法
2009/10/20 HTML / CSS
Move Free官方海外旗舰店:美国骨关节健康专业品牌
2017/12/06 全球购物
市场部专员岗位职责
2013/11/30 职场文书
房地产开发项目建议书
2014/05/16 职场文书
物业管理专业求职信
2014/06/11 职场文书
2015仓库保管员年终工作总结
2015/05/13 职场文书
SQL SERVER中的流程控制语句
2022/05/25 SQL Server