2008-10-31 1 views

답변

6

왜 이런 일이 발생하는지 완전히 이해하지 못합니다.하지만 해결할 수 있습니다.

bug은 내가 겪고있는 것과 동일한 문제를 설명합니다. 다른 스크립트에 게시하는 스크립트가 있습니다. 모두 동일한 세션을 사용합니다.이 스크립트는 PHP를 사용합니다.

전체 컬 포스트 스크립트를 수행하기 전에 session_commit 함수를 호출하여 호출 스크립트 세션을 종료하고 호출 된 스크립트를 사용하여 세션을 다시 시작합니다.

내려 쳐 ... 스크립트가 session_write_close을 (를 호출 할 필요없이 종료 후

http://php.net/manual/en/function.session-write-close.php

세션 데이터는 일반적으로 저장되는 PHP 매뉴얼)에서

9

세션 데이터가 잠겨 있지만으로 동시 쓰기를 방지하기 위해 언제든지 하나의 스크립트 만 세션에서 작동 할 수 있습니다.. 세션과 함께 프레임 세트를 사용할 때이 잠금으로 인해 하나씩로드되는 프레임을 경험하게됩니다. 세션 변수에 대한 모든 변경이 완료 되 자마자 세션을 종료하여 모든 프레임을로드하는 데 필요한 시간을 줄일 수 있습니다.

그래서 두 개의 스크립트가 동일한 세션 시간을 사용할 수 없습니다.

2

나는 이것에 대해서도 물었습니다. 나는 stackoverflow에서 제공하는 정보 덕분에 그것을 고쳤습니다.

나는 두 페이지를 가지고 있는데, 둘 다 맨 위에 "session_start()"가 있었고 첫 번째는 curl로 두 번째 호출하여 유효성 검사 후 두 번째 스크립트에 변수를 POST 할 수있었습니다. 웹 서버가 "session_write_close()"를 추가 할 때까지 중단되었습니다.

코드 샘플은 다음과 같습니다

// IMPORTANT (OR ELSE INFINITE LOOP) - close current sessions or the next page will wait FOREVER for a write lock. 
session_write_close(); 

// We can't use GET because we can't display the password in the URL. 
$host = $_SERVER['HTTP_HOST']; 
$uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\'); 
$url = "http://$host$uri/formPage2.php?"; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$url); //append URL 
curl_setopt($ch, CURLOPT_POST,TRUE);//We are using method POST 
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($_REQUEST, '', "&"));//append parameters  

curl_exec($ch); // results will be outputted to the browser directly 
curl_close($ch); 
exit(); 
관련 문제