>  기사  >  백엔드 개발  >  PHP 액세스 종료 후 처리를 계속하는 방법

PHP 액세스 종료 후 처리를 계속하는 방법

(*-*)浩
(*-*)浩원래의
2019-10-16 11:32:472204검색

오늘 dewen에서 누군가 브라우저 액세스가 끝난 후 후속 코드를 계속 실행하기 위해 php를 사용하는 방법을 묻는 것을 봤습니다. 데모를 작성했습니다. php-fpm 환경에서는 fastcgi_finish_request만 구현하면 매우 쉽습니다. 다른 컨테이너라면 자바스크립트를 클라이언트에 출력한 후 백그라운드에서 계속 실행해야만 점프가 가능하다고 생각합니다.

PHP 액세스 종료 후 처리를 계속하는 방법

데모는 아래와 같고, php-fpm 테스트는 가능하지만, apache php-cgi는 환경이 없어서 테스트를 하지 않았습니다. (추천 학습: PHP 비디오 튜토리얼)

<?php
// 你要跳转的url
$url = "http://www.baidu.com/";
 
// 如果使用的是php-fpm
if(function_exists(&#39;fastcgi_finish_request&#39;)){
    header("Location: $url");
    ob_flush();
    flush();
    fastcgi_finish_request();
// Apache ?
}else{
    header( &#39;Content-type: text/html; charset=utf-8&#39; );
    if(function_exists(&#39;apache_setenv&#39;))apache_setenv(&#39;no-gzip&#39;, &#39;1&#39;);
    ini_set(&#39;zlib.output_compression&#39;, 0);
    ini_set(&#39;implicit_flush&#39;, 1);
    echo "<script>location=&#39;$url&#39;</script>";
    ob_flush();
    flush();
}
 
    // 这里是模拟你的耗时逻辑
    sleep(2);
    file_put_contents(&#39;/tmp/test.log&#39;, &#39;ok&#39;);

위 내용은 PHP 액세스 종료 후 처리를 계속하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.