2016-08-16 3 views
-1

필자는 테이블에 결과를 삽입하기 전에 몇 가지 작업을 수행하는 PHP 스크립트를 가지고 있습니다.하지만 두 번 이상 같은 스크립트를 실행하지 못하게하려고합니다. 내 브라우저에서 하나의 탭,이 작업을 수행하는 트릭을 할 일하고 있어요,이 세션을 사용하고있어, 스크립트를 실행할 때 업데이트 된 특정 세션 변수가 있어요. 내 질문은 ..

나는이

session_start(); 

if (isset($_SESSION['lock'])) { 

    if ($_SESSION['lock'] === false) { 

     $_SESSION['lock'] = true; 
    } 
} 

그 코드가 변수가 세계적으로 업데이트 될 새 값으로 업데이트되면, 아약스 요청과 함께 실행되는 파일에있다 뭔가를 가지고 있다면? , 내가 tab2에서 동일한 작업을 수행 할 때 tab1에서 스크립트를 실행 한 후 동일한 페이지 (tab1 및 tab2)로 두 개의 탭을 열어 놓은 것을 의미합니다. $_SESSION['lock']true 또는 false이 될 것입니까?이 설명이 도움이되기를 바랍니다.

참고 : 두 탭이 동시에 열리고

+0

시도해 보셨습니까? 무슨 일이 일어날 지 물어 보는 중이니까. – Steve

+0

@Steve 시도했지만 작동하지 않았다. 그래서 PHP에서 세션의 모든 기능을 알지 못하기 때문에 묻습니다. 전 세계적으로 작동합니다. 한 변수를 업데이트하면 전체 세션에서 업데이트됩니다. 내가 페이지를 새로 고치지 않는다면 순간은 중요하지 않니? 죄송합니다. 제 영어 실력이 좋지 않습니다. –

+0

스크립트가 실행되기 전에 ajax 호출이 더 잘 수행되어야합니다. 그렇지 않으면 시간이 많이 걸리는 스크립트가 어쨌든 두 번 실행될 수 있습니다. – coderodour

답변

1

예, 세션이 고유 한 사용자에 바인딩, 그래서 그들은 탭에 걸쳐 퍼져있다. 그래도 그걸 시험해 보는 게 어때?

2

예, $_SESSION을 변경하는 것은 특정 사용자에 대한 전체적인 변경입니다. 그러나 $_SESSION에 대한 변경 사항은 여러 창 "라이브"로 푸시되지 않습니다. 모든 창/탭의 후속 조회에서만 새 값이 해당 탭/창에 영향을 줄 수 있습니다.

+0

나는 이것을 이해할 수있는 방법에 대해 알고 있습니까? 다른 방법인가요? 또는 그것은 가능하지 않습니까? –

+0

당신은 websockets/long-polling/etc ... 같은 것들을 확인하기 위해 사용할 수 있지만 진짜 탐구는 다음과 같습니다 : 왜 이런 종류의 일에 즉각적인 피드백이 필요합니까? 다른 창에서 창을 적극적으로 요청하지 않으면 서버와의 연결이 끊어지고 서버에서 아무 것도 할 수 없습니다. 다음에 서버에 도달하면 물건이 잠겨 있다고 말할 수 있습니다. –

+0

나는이 티켓에 대한 "티켓"정보를 나열한 테이블을 얻었습니다. 그런 다음 두 개의 탭에서 같은 URL을 열면 같은 목록을 얻었습니까? 그래서 첫 번째 탭 작업을 수행하고 완료되면 모든 정보가 내 데이터베이스에 저장되었지만 두 번째 탭으로 이동하면 여전히 그 목록이 목록에 있습니다. 첫 번째 작업에서했던 동일한 작업, 내 데이터베이스에 두 번 동일한 정보를 다시 저장하므로이 문제가 발생하지 않도록하려면 –

관련 문제