2011-09-10 6 views
0

나는 $ _SESSION에서 "작업 할 작업"데이터를 저장하고 매번 다음 작업을 수행 할 때마다 스스로를 호출하는 서버 측 작업자 관리자 스크립트를 작성합니다. 이것은 내가 멈출 수 있고 필요할 때마다 다시 할 수 있기 때문에 나에게 통제권을 준다. 이것은 잘 작동합니다. 내가 가지고있는 문제는 $ _SESSION을 공유하기 때문에 동일한 브라우저에서 두 개의 관리자를 실행할 수 있어야한다는 것입니다. 그래서 HTTP 요청에 명시된 sessionId에 따라 다른 데이터를 유지하는 2 차원 $ _SESSION 배열을 만들려고합니다. 한 번에 하나의 작업을 수행하고 나머지 작업 목록을 '$_SESSION[$sessionId]'변수에 보관하는 동일한 브라우저에서 여러 크롤러를 실행하려면이 작업을 수행하고 싶습니다. 그래서 각 요청에 sessionId을 추가 한 다음 각 스크립트에서이 요청을 사용합니다. sessionId 없이는 훌륭하게 작동하며 예상대로 작동하지 않습니다. 이유를 이해하는 데 어려움을 겪고 있습니다. 코드에 currId = 1,2,3,4,5 자신을 다시 호출 기대 내가 test3.php?limit=5&currId=0&sessionId=0과보다 먼저 전화를 호출하고있어

session_start(); 
$sessionId = $_REQUEST['sessionId']; 

if ($_REQUEST['currId'] == 0) { 
    unset ($_SESSION[$sessionId]); 
    $_SESSION[$sessionId]['log'] = "starting log for session " . $s; 
} 

if ($_REQUEST['currId'] < $_REQUEST['limit']) { 
    $_SESSION[$sessionId]['log'] .= " adding "; 

    // call with next currId 
    echo '<META HTTP-EQUIV="Refresh" CONTENT="1;URL=' . "'test3.php?limit=" . $_REQUEST['limit'] . "&currId=" . ($_REQUEST['currId']+1) . "&sessionId=" . $sessionId . "'" . '">'; 
} 

// reached limit 
else { 
    echo $_SESSION[$sessionId]['log']; 
}; 

: 이것은 내 문제를 설명하는 샘플 코드입니다. 이것은 괜찮습니다. $ _SESSION은 그대로 유지되지 않으므로 이됩니다. sessionId 사용을 제거하면 제대로 작동합니다. 그러나 당신은 숫자가 아닌 sessionId 더 많은 행운을 내가 다른 브라우저를 열어야 난 단지 동시에 하나의 크롤러를 호출 할 수 있습니다 그런 식으로 ...

감사

+0

여기에서 성취하려고하는 것이 확실하지 않습니다. 'test3.php'가 서버 측 작업자를 시작하는 데 어떻게 든 책임이 있다면, 즉시 모든 작업을 시작하게하십시오. 브라우저 창에서 몇 가지 작업을 수행하는 것과 마찬가지로, 리디렉션을 계속하면 어쨌든 한 번에 한 가지 작업 만 수행 할 수 있습니다. – Jon

+0

서버 측 작업자의 수가 너무 많기 때문에 한 번에 한 명의 작업자를 수행하고 싶습니다. 이렇게하면 내가 원할 때마다 멈출 수 있고 계속할 수 있습니다. 이것이 내가 $ _SESSION에 "해야 할 일이 무엇인가"의 데이터를 저장하는 이유입니다. 이제이 작업은 훌륭하게 진행되었습니다. 동일한 $ _SESSION을 공유하는 두 명의 근로자 관리자를 함께 실행하는 옵션을 추가하기를 원했습니다. – Noam

답변

2

가있을 수 있습니다. 오류보고를 error_reporting(E_ALL); 그 중 하나는 Notice: Unknown: Skipping numeric key 0 in Unknown on line 0입니다.

php pages의 한 주석 자에 따르면 이것은 $_SESSION 배열의 키로 정수를 사용하기 때문에 발생합니다. 오류없이이 옵션을 시도하면 사라집니다.

또한 변수 $s을 가지고 있는데 여기에는 $sessionId이어야한다고 가정합니다.

+0

정확히 이것이었습니다. 숫자 값을 사용하지 않으면 효과가있었습니다! 감사! – Noam

+0

문제가되지 않습니다. 전에도이 문제를 겪어 본 적이 없습니다. - 왜 그것이 마음에 들지 않는지 궁금합니다. – Adam