2011-09-10 10 views
0

私は$ _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でより多くの運を持っているかもしれません...同時に

おかげ

+0

ここで何を達成しようとしているのか分かりません。 'test3.php'が何らかの形でサーバ側のワーカーの起動を担当している場合は、一度にすべて起動させてください。ブラウザのウィンドウにいくつかの作業をさせることについては、リダイレクトを続けると、一度に1つのことしか行えないことは明らかです。 – Jon

+0

サーバ側の作業者の数が膨大なので、一度に1人の作業者をやりたいと思います。こうすることで、いつでも私はそれをやめて、それをやり続けることができます。これが、私が "$ _SESSION"に "何をする必要があるか"というデータを保存している理由です。今これは素晴らしい作業です、私はちょうど同じ$ _SESSIONを共有するこれらの労働者マネージャーのカップルを一緒に実行するオプションを追加したいと思います。 – Noam

答えて

2

を1つのクローラを呼び出すことができます。 error_reporting(E_ALL)でエラー報告を有効にすると、いくつかの通知が表示されますが、そのうちの1つはNotice: Unknown: Skipping numeric key 0 in Unknown on line 0です。

php pagesの1つのコメント者によると、これは$_SESSION配列のキーとして整数を使用することによって発生します。エラーを表示せずにこれを試しても消えます。

また、$sという変数があります。私は$sessionIdであるはずですが、これも通知になるはずです。

+0

これはまさにこれでした。私が数値を使用しなかったとき、それはうまくいった!ありがとう! – Noam

+0

問題はない、私はこれの前に出くわしたことはない - なぜそれが好きではないのだろうか? – Adam