>  기사  >  백엔드 개발  >  PHP 세션 읽기-쓰기 잠금 관련 내용

PHP 세션 읽기-쓰기 잠금 관련 내용

jacklove
jacklove원래의
2018-06-09 11:51:332077검색

php 세션 읽기-쓰기 잠금

예제를 먼저 살펴보겠습니다. 기능:

1 페이지에서 버튼을 클릭하면 ajax가 php를 실행하고 세션은 php에서 어떤 단계를 기록하는 데 사용됩니다. 실행의.

2. ajax를 사용하여 다른 PHP를 폴링하고 세션에서 데이터를 얻은 다음 실행 단계를 출력합니다.

session.html php를 호출하여 실행 단계를

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html;charset=utf-8">
  <script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
  <title> session lock </title>
 </head>
 <body>
  <input type="button" value="handle" onclick="handle()">
  <p id="result"></p>
  <script type="text/javascript">
    function handle(){
        $.get("handle.php"); // 执行handle
        // 每500毫秒请求,获取执行到第几步
        var et = setInterval(function(){
            $.get("getstep.php",
                function(data){
                    $(&#39;#result&#39;).html(&#39;当前执行:&#39; + data + &#39;<br>&#39;);
                    if(data==&#39;complete&#39;){
                        clearInterval(et);
                    }
                }
            );
        },500);
    }
  </script>
 </body>
</html>


handle.php에 실행하고 출력합니다. 실행 단계를

<?php
session_start();
$_SESSION[&#39;step&#39;] = &#39;&#39;;
$n = 1;
while($n<=10){
    $_SESSION[&#39;step&#39;] = $n;
    sleep(1);
    $n++;
}
$_SESSION[&#39;step&#39;] = &#39;complete&#39;;
?>


getstep.php에 기록하고

<?php
session_start();
echo isset($_SESSION[&#39;step&#39;])? $_SESSION[&#39;step&#39;] : &#39;&#39;;
?>


의 실행 단계 실행 시 매 단계마다 반환되지 않고 10초 대기 후 바로 완료가 반환되는 것으로 확인되었습니다.

session_start()가 실행되면 세션이 잠깁니다. 페이지 실행이 완료될 때까지.

따라서 페이지 실행 중에 세션에 쓴 내용은 메모리에만 저장되고 세션 파일에는 기록되지 않습니다.

세션을 읽으려면 세션 잠금이 해제될 때까지 기다려야 읽을 수 있습니다.

session_write_close()를 사용하여 세션 파일에 데이터를 쓰고 세션 프로세스를 종료할 수 있습니다. 이런 방식으로 페이지 실행이 완료될 때까지 기다릴 필요가 없으며 실행 단계도 얻을 수 있습니다.

하지만 여기에는 문제가 있습니다. 즉, session_write_close()를 실행한 후에는 세션에 대한 모든 쓰기 작업이 작동하지 않습니다. 세션 프로세스가 종료되었기 때문입니다.

그래서 세션을 다시 작성해야 할 때는 앞의 세션 데이터에 session_start()를 추가하고 세션을 종료하세요.

handle.php 실행 단계를 얻으려면 다음 수정 사항을 클릭하세요

<?php
session_start();
$_SESSION[&#39;step&#39;] = &#39;&#39;;
$n = 1;
while($n<=10){
    $_SESSION[&#39;step&#39;] = $n;
    session_write_close(); // 将数据写入session文件,并结束session进程
    session_start();       // 重新创建session进程
    sleep(1);
    $n++;
}
$_SESSION[&#39;step&#39;] = &#39;complete&#39;;
?>
이 글에서는 설명합니다. PHP 세션 읽기-쓰기 잠금에 대해 더 많은 관련 내용을 보려면 PHP 중국어 웹사이트를 참고하세요.

관련 권장 사항: PHP를 사용하여 수선화 수를 최적화하세요

php를 통해 ID 번호를 확인하는 방법

php를 통해 YouTube 동영상 정보를 얻는 방법

위 내용은 PHP 세션 읽기-쓰기 잠금 관련 내용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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