2017-12-27 1 views
-1

내가 개발 한 PHP 앱이 있습니다. 여러 창에서 동일한 세션을 사용하여 응용 프로그램을 사용하는 경우 한 창에서 다른 창에서 중요한 mySql 작업을 수행하는 중 바쁜 경우 첫 번째 창에서 쿼리 실행이 완료 될 때까지 완료되지 않습니다. . 내가 허용되는 사용자 세션 당 쿼리 수에 제한이 있다고 가정하고 PHP에서 단일 세션이 여러 창이나 쿼리를 사용할 수 있도록하는 설정이 있지만 찾을 수없는 것 같습니다. 누구든지 올바른 방향으로 나를 가르쳐 주시겠습니까? 시도해 보았지만 검색을위한 올바른 방법을 찾아 내지 못했습니다.PHP 세션 사용자에 대한 mySQL 쿼리를 제한합니까?

감사합니다.

+0

은 브라우저 일이 ... –

+0

은 로그인 한 사용자의 세션 ID를 만들 데이터베이스에 저장하고 다음에 loging와 여러 개의 창을 사용시 사용자의 세션을 확인합니다. 세션 ID가 현재 사용자 및 창과 일치하지 않으면 php가 사용자에게 플래그를 지정합니다. 그것은 다른 브라우저에서 동일한 사용자의 다중 로그인을 사용하는 동일한 솔루션입니다. – dean

답변

1

session_write_close()을 보았습니까?

기본적으로 PHP 스크립트에 연결되면 PHP는 세션을 (쓰기 목적으로) 잠그고 해당 세션에 대한 다른 요청은 대기합니다 (다른 PHP 스크립트에서 세션에 동시에 쓰는 동안 예기치 않은 오류가 발생하지 않도록 방지합니다.)

PHP 스크립트가 실행될 때까지 세션이 잠겨 있으므로 MySQL 작업이 기본적으로 세션 대기열을 막습니다.

실제 작업을 수행하기 바로 전에 세션에 더 이상 쓰지 않을 것이라고 PHP에게 알리십시오.

<?php 

session_start(); 
$user = $_SESSION["user"]; 

// you did your thing, now leave the session 
session_write_close(); 

// some clogging task 
while ($i < 10) { 
    sleep(1); 
    $i++; 
} 
관련 문제