나는 $ _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
더 많은 행운을 내가 다른 브라우저를 열어야 난 단지 동시에 하나의 크롤러를 호출 할 수 있습니다 그런 식으로 ...
감사
여기에서 성취하려고하는 것이 확실하지 않습니다. 'test3.php'가 서버 측 작업자를 시작하는 데 어떻게 든 책임이 있다면, 즉시 모든 작업을 시작하게하십시오. 브라우저 창에서 몇 가지 작업을 수행하는 것과 마찬가지로, 리디렉션을 계속하면 어쨌든 한 번에 한 가지 작업 만 수행 할 수 있습니다. – Jon
서버 측 작업자의 수가 너무 많기 때문에 한 번에 한 명의 작업자를 수행하고 싶습니다. 이렇게하면 내가 원할 때마다 멈출 수 있고 계속할 수 있습니다. 이것이 내가 $ _SESSION에 "해야 할 일이 무엇인가"의 데이터를 저장하는 이유입니다. 이제이 작업은 훌륭하게 진행되었습니다. 동일한 $ _SESSION을 공유하는 두 명의 근로자 관리자를 함께 실행하는 옵션을 추가하기를 원했습니다. – Noam