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

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

本文主要介绍PHP http请求超时问题的解决方法,通过示例代码非常详细的介绍,对大家的学习或者工作有一定的参考价值,有需要的朋友可以参考一下。

一,http请求超时时间

可能的场景:

1.卷曲过程已经运行了一个世纪,但它仍然会结束。当curl运行时,它设置一个timeout - connect-timeout 1000。

2,操作在1000毫秒后超时,收到0个字节

3、connect()超时!

Wget有不同的超时,比如请求超时和传输超时。同样,HTTP请求也有两个超时:一个是连接超时,另一个是数据传输的最大允许时间。如果有问题,就看哪个超时出了问题。

Curl命令行

连接超时由- connect-timeout参数指定,数据传输的最大允许时间由-m参数指定,时间为毫秒。

例如:

curl-connect-time out 10-m 20 http://* * *

如果连接超时,错误提示如下:

curl: (28) connect()超时!

如果数据传输的最大允许时间超时,将出现如下错误提示:

curl: (28)操作在2000毫秒后超时,收到0个字节

使用PHP的curl_init

?php //创建新的cURL资源$ ch=cURL _ init();//设置URL和其他适当的选项curl_setopt($ch,CURLOPT_URL, http://www . example . com/);curl_setopt($ch,CURLOPT_HEADER,0);

//连接超时curl _ setopt ($ ch,curl opt _ connect timeout,1000);

//数据传输的最大允许时间curl _ setopt ($ ch,curl opt _ timeout,1000);//抓取URL并传递给浏览器curl _ exec($ ch);//关闭cURL资源,释放系统资源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秒。实际上,最大执行时间=max_execution_time值in=PHP . ini-当前脚本已执行时间的设置值。

如果php.ini中的max _ execution _ time=30,并且当前脚本已经执行了5秒,那么:

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

注意:当PHP在安全模式下运行时,set_time_limit()将没有结果,除非关闭安全模式或者修改结构文件中的时间限制。

三,php长连接

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

例如下面的脚本:

?服务器端编程语言(Professional Hypertext Preprocessor的缩写)

标题(“Content-Type:text/plain”);

set _ time _ limit(0);

$infoString=Hello World 。 n ;

while( isset($infoString))

{

echo $ infoString

flush();

ob _ flush();

睡眠(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重新启动

这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

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