register_shutdown_function 在windows的 fpm进程中执行是同步执行完后才输出的问题

问题:
register_shutdown_function函数 在windows的fpm进程中执行完后才会返回给客户端。

目前情况:
下方示例程序在linux中是输出code:1,之后再执行sleep,并且不会输出”register”,但是在windows中等sleep执行完后返回code:1再输出量”register”

期望:
无论是windows还是linux都是给客户端返回code:1,然后后台继续执行register的函数内部逻辑

示例:

function test(){
    register_shutdown_function(function(){
        sleep(10);
        echo "register";
    });
    return response()->json(['code'=>1]);
}
php
讨论数量: 3

我猜测你使用的是Laravel框架,在Linux下可以是因为Laravel调用了fastcgi_finish_request()

fastcgi_finish_request()FPM函数,且Windows下没有替代品。

所以你的需求据我所知无法做到

2年前 评论
hardshen (楼主) 2年前
renxiaotu (作者) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!