【保持连接】PHP保持连接不断持续执行【原创】

在项目中,经常需要保持长时间的连接,比如说接口,去获取某个外部接口的数据并进行处理的时候,可能由于该接口返回的数据量比较大,所以接口很容易就超时了(php.ini设置了连接的最大时间),为了避免超时,可以分批获取

当然,PHP也可以实现连接不断持续执行的,忽略php.ini的超时时间,
比如可以通过fastcgi_finish_request和set_time_limit(0)来实现:

<?php

// 设置时区
date_default_timezone_set('PRC');

// 避免超时报错
set_time_limit(0);

// 避免内存不足
ini_set('memory_limit', '-1');

// 该方法是FPM提供的方法,只能运行在FastCGI模式下,在CLI模式或者是模块模式等非FPM模式下的话,会报错的,需要加上以下代码才可以
if (!function_exists("fastcgi_finish_request")) {
    function fastcgi_finish_request()  {
    }
}

// 响应完成, 关闭连接
fastcgi_finish_request();

$i = 1;
while (true) {
    echo $i . ':当前时间为:' . date('Y-m-d H:i:s') . PHP_EOL;
    sleep(10);
    $i++;
}

同样,也可以使用Swoole或者是Workerman来实现
比如使用Workman的定时器来实现:

<?php

use Workerman\Worke
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值