美文网首页
PHP的异步实现方式

PHP的异步实现方式

作者: sorry510 | 来源:发表于2020-06-08 16:40 被阅读0次

[TOC]

方法

fastcgi_finish_request()

此函数冲刷(flush)所有响应的数据给客户端并结束请求。 这使得客户端结束连接后,需要大量时间运行的任务能够继续运行,此函数需要fpmwindow下无fpm无法使用

ignore_user_abort(true)

设置此函数可以忽律客户端中断后,保证php脚本继续执行,此时需要解决另一个问题,如何通知客户端进行中断,可以设置header主动通知客户端中断

ob_end_clean();
header("Connection: close\r\n");
ignore_user_abort(true); // optional
ob_start();
echo ('something');
$size = ob_get_length();
header("Content-Length: $size"); // 必须写这个长度,否则无效
ob_end_flush();
flush();
ob_end_clean();

// other thing
register_shutdown_function(function() {
    sleep(10);
    echo('Text user will never see');
    file_put_contents('test.log', 'hello' . PHP_EOL, FILE_APPEND);
});

curl

利用curl执行另一个脚本(另一个脚本需要设置set_time_limit()),设置CURLOPT_CONNECTTIMEOUT_MS为1,1毫秒超时

$ch = curl_init();
$curl_opt = array(CURLOPT_URL, 'http://www.example.com/backend.php',
                            CURLOPT_RETURNTRANSFER, 1,
                            CURLOPT_CONNECTTIMEOUT_MS, 1);
curl_setopt_array($ch, $curl_opt);
curl_exec($ch);
curl_close($ch);

popen

打开一个新的命令,利用linux&让它后台执行,window无法使用

pclose(popen("php ./test.php &", 'r'));

任务投递

将任务序列号或参数投递给redis或数据库,然后开启一个轮训任务,不断的去执行被投递的任务

使用第三方框架的多进程模式

swoole
workerman

相关文章

  • PHP的异步实现方式

    [TOC] 方法 fastcgi_finish_request() 此函数冲刷(flush)所有响应的数据给客户端...

  • 二十、PHP图片上传

    index.php Ajax+PHP实现异步图片上传

  • PHP异步请求实现方式

    一.使用fsockopen的方式 我们创建了一个基于fsockopen的函数,这个函数中利用fsockopen去访...

  • PHP伪异步实现 通过CURL实现PHP异步

    介绍一种PHP通过curl实现异步处理的方式,目前应用在我的项目中,使用之前需要安装php_curl扩展 因为cu...

  • 听欢哥讲PHP之异步是怎么玩的

    PHP异步 PHP是世界上最好的语言,但是总被“同行们”吐槽不支持异步。其实我们要实现异步也非常简单,之前看到鸟哥...

  • Go 进阶 003 协程

    Swoole 生态的本质是 php-cli 协程化 php -i|grep php.ini 同步代码实现异步IO的...

  • PHP实现异步任务

    在实际的应用开发中经常都会碰到碰到一些相对比较耗时的任务需要处理,而用户也不能等到这些耗时的任务结束后才收到响应,...

  • 怎么实现PHP异步

    在开发中遇到过这样的问题(我是在支付宝回调的时候,处理的业务逻辑有点多),某段程序执行很慢,但是这又涉及到用户体验...

  • 同步、异步和中断、轮询

    同步同步的实现方式有等待和轮询。 异步异步的实现方式是回调函数或通知(https://imageslr.com/2...

  • PHP异步: 利用pcntl扩展实现PHP异步处理

    思路:利用pcntl生成一个子进程处理异步任务,处理完后杀掉子进程。依赖:该功能依赖于php pcntl扩展,使用...

网友评论

      本文标题:PHP的异步实现方式

      本文链接:https://www.haomeiwen.com/subject/qvbrtktx.html