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 相关文章推荐
php5中date()得出的时间为什么不是当前时间的解决方法
Jun 30 PHP
Memcache 在PHP中的使用技巧
Feb 08 PHP
修改php.ini以达到屏蔽错误信息并记录日志
Jun 16 PHP
ThinkPHP实现跨模块调用操作方法概述
Jun 20 PHP
ThinkPHP验证码和分页实例教程
Aug 22 PHP
PDO防注入原理分析以及注意事项
Feb 25 PHP
php调整服务器时间的方法
Apr 03 PHP
Symfony2在Nginx下的配置方法图文教程
Feb 04 PHP
PHP编程计算日期间隔天数的方法
Apr 26 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
Dec 21 PHP
Laravel创建数据库表结构的例子
Oct 09 PHP
PHP遍历数组的6种方式总结
Nov 17 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编程网上资源导航
2006/10/09 PHP
PHP企业级应用之常见缓存技术篇
2011/01/27 PHP
php快递单号查询接口使用示例
2014/05/05 PHP
PHP版本常用的排序算法汇总
2015/12/20 PHP
php.ini中date.timezone设置详解
2016/11/20 PHP
PHP自定义函数获取汉字首字母的方法
2016/12/01 PHP
Ext面向对象开发实践(续)
2008/11/18 Javascript
原生JS实现表单checkbook获取已选择的值
2013/07/21 Javascript
Javascript堆排序算法详解
2014/12/03 Javascript
Node.js事件循环(Event Loop)和线程池详解
2015/01/28 Javascript
javascript基于prototype实现类似OOP继承的方法
2015/12/16 Javascript
jQuery简单获取键盘事件的方法
2016/01/22 Javascript
JavaScript的Backbone.js框架的一些使用建议整理
2016/02/14 Javascript
Bootstrap fileinput文件上传组件使用详解
2017/06/06 Javascript
[00:31]DOTA2荣耀之路7:Miracle-空血无敌斩
2018/05/31 DOTA
[00:47]DOTA2荣耀之路6:玩不了啦!
2018/05/30 DOTA
python scipy卷积运算的实现方法
2019/09/16 Python
Python进行统计建模
2020/08/10 Python
python 读取、写入txt文件的示例
2020/09/27 Python
python中not、and和or的优先级与详细用法介绍
2020/11/03 Python
python 实现围棋游戏(纯tkinter gui)
2020/11/13 Python
重构Python代码的六个实例
2020/11/25 Python
工作会议主持词
2014/03/17 职场文书
公休请假条
2014/04/11 职场文书
社区科普工作方案
2014/06/03 职场文书
学校运动会广播稿范文
2014/10/02 职场文书
2014年老干部工作总结
2014/11/21 职场文书
2015欢度元旦标语口号
2014/12/09 职场文书
公务员考察材料
2014/12/23 职场文书
堂吉诃德读书笔记
2015/06/30 职场文书
2016年国庆节假期旅游工作总结
2016/04/01 职场文书
辞职信怎么写?你都知道吗?
2019/06/24 职场文书
环境保护宣传标语大全!
2019/06/28 职场文书
python 三边测量定位的实现代码
2021/04/22 Python
十大最强奥特曼武器:怪兽战斗仪在榜,第五奥特之父只使用过一次
2022/03/18 日漫
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫