私が背景に労働者のを送信するために、例えば、私を可能にブライアン月のGearman Managerを使用しています。私はグローバルキーワードを使用して、関数の外で定義された変数を使用したいときに私が直面してる 問題がある:Gearmanマネージャーグローバル変数== NULL
$var = 200;
function worker_execution($job, &$log) {
global $var;
echo "global is: ".$var."\n";
}
このコードはなりません出力200変数がNULLであるので!
を使用すると、ワーカー機能にグローバルスコープを有効にする理由を知っていますか?
ギアマンマネージャーにはワーカーファイルがそのまま含まれているという問題があると思われます。それは読み込み中で、「ワーカー関数」に直接入りますが、変数にアクセスするための解決策が必要です労働者の機能の範囲外に!
@Darhazer ...私はデータベースから作業負荷としてデータベースに膨大なデータを渡しています... DBオブジェクトを作業者に送信する必要があれば、直列化する必要があります。それは、それを組み立てる際に問題を引き起こすでしょうか?すべてのメソッドは機能しますか? – luigi7up
これはあなたのグローバルな$ varと関係があります。 $ varが初期化されている場所 - 作業者にジョブを送信するコード?オブジェクトを直列化して作業者に渡すことに問題はありません。ご存じのように、作業者は、データのシリアル化を解除する前に、オブジェクトの定義をロードする必要があります。 –