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也可以?成Shell Script
Oct 09 PHP
php中将地址生成迅雷快车旋风链接的代码[测试通过]
Apr 20 PHP
PHP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
Apr 08 PHP
使用Linux五年积累的一些经验技巧
Jun 20 PHP
ajax返回值中有回车换行、空格的解决方法分享
Oct 24 PHP
PHP遍历文件夹与文件类及处理类用法实例
Sep 23 PHP
Smarty保留变量用法分析
May 23 PHP
php通过执行CutyCapt命令实现网页截图的方法
Sep 30 PHP
thinkPHP框架中执行事务的方法示例
May 31 PHP
php提取微信账单的有效信息
Oct 01 PHP
详解Laravel服务容器的绑定与解析
Nov 05 PHP
Yii中特殊行为ActionFilter的使用方法示例
Oct 18 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
超详细的php用户注册页面填写信息完整实例(附源码)
2015/11/17 PHP
PHP实现的简单操作SQLite数据库类与用法示例
2017/06/19 PHP
php反射学习之依赖注入示例
2019/06/14 PHP
实现laravel 插入操作日志到数据库的方法
2019/10/11 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2021/03/09 PHP
学习从实践开始之jQuery插件开发 菜单插件开发
2012/05/03 Javascript
JQuery中SetTimeOut传参问题探讨
2013/05/10 Javascript
Firefox和IE兼容性问题及解决方法总结
2013/10/08 Javascript
把jQuery的类、插件封装成seajs的模块的方法
2014/03/12 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
2015/03/03 Javascript
JS+CSS相对定位实现的下拉菜单
2015/10/06 Javascript
js获取当前年月日-YYYYmmDD格式的实现代码
2016/06/01 Javascript
JavaScript禁止用户多次提交的两种方法
2016/07/24 Javascript
vue开发调试神器vue-devtools使用详解
2017/07/13 Javascript
echart简介_动力节点Java学院整理
2017/08/11 Javascript
ES6 系列之 Generator 的自动执行的方法示例
2018/10/19 Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
2020/02/12 Javascript
详解Python3操作Mongodb简明易懂教程
2017/05/25 Python
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
python在html中插入简单的代码并加上时间戳的方法
2018/10/16 Python
python实现图片识别汽车功能
2018/11/30 Python
python实现手机销售管理系统
2019/03/19 Python
详解Python字符串切片
2019/05/20 Python
python面向对象 反射原理解析
2019/08/12 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
2019/10/17 Python
Python笔记之facade模式
2019/11/20 Python
python 实现一个反向单位矩阵示例
2019/11/29 Python
python使用hdfs3模块对hdfs进行操作详解
2020/06/06 Python
深入浅析css3 border-image边框图像详解
2015/11/24 HTML / CSS
维氏瑞士军刀英国网站:Victorinox英国
2019/07/04 全球购物
西班牙品牌鞋子、服装和配饰在线商店:Esdemarca
2021/02/17 全球购物
彪马香港官方网上商店:PUMA香港
2020/12/06 全球购物
药品业务员岗位职责
2014/04/17 职场文书
师范生见习报告
2014/10/31 职场文书
详解ZABBIX监控ESXI主机的问题
2022/06/21 Servers