私は$ _SESSIONの "作業する仕事"のデータを保存し、次回の作業を行うたびに自分自身を呼び出します。これは私がコントロールすることができます。なぜなら、私はいつでも停止して再開できるからです。これは素晴らしいです。私が抱えている問題は、$ _SESSIONを共有しているので、同じブラウザでこれらのマネージャをいくつか実行できることです。だから、私はHTTP要求で指定したsessionIdに従って異なるデータを保持する2次元の$ _SESSION配列を作成しようとしています。私は、一度に1つのタスクを実行し、残りのタスクのリストをその '$_SESSION[$sessionId]
'変数に保持する、同じブラウザからいくつかのクローラを実行するためにこれを実行したいと思います。だから私はsessionId
を各リクエストに追加してから、各スクリプトがそれを使用します。それはsessionId
なしで素晴らしい作品と私が期待どおりに動作しません。理由を理解するのが難しいです。これは私の問題を実証するサンプルコードです:
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'];
};
私が最初にtest3.php?limit=5&currId=0&sessionId=0
へとコードがcurrId = 1,2,3,4,5で自身を再呼び出しすることを期待よりもコールを呼び出しています。これはOkです。 $ _SESSIONは、私が と予想しているので、保持されません。 sessionId
の使用を取り除くと正常に動作します。私は別のブラウザを開かない限りしかし、その方法は、私はあなたが数字ではないsessionId
でより多くの運を持っているかもしれません...同時に
おかげ
ここで何を達成しようとしているのか分かりません。 'test3.php'が何らかの形でサーバ側のワーカーの起動を担当している場合は、一度にすべて起動させてください。ブラウザのウィンドウにいくつかの作業をさせることについては、リダイレクトを続けると、一度に1つのことしか行えないことは明らかです。 – Jon
サーバ側の作業者の数が膨大なので、一度に1人の作業者をやりたいと思います。こうすることで、いつでも私はそれをやめて、それをやり続けることができます。これが、私が "$ _SESSION"に "何をする必要があるか"というデータを保存している理由です。今これは素晴らしい作業です、私はちょうど同じ$ _SESSIONを共有するこれらの労働者マネージャーのカップルを一緒に実行するオプションを追加したいと思います。 – Noam