2011-07-26 20 views
1

我正在使用Brian Moon的Gearman Manager,它允許我將工作人員發送到後臺。 我面臨的問題是,當我想使用通過使用全球關鍵字的功能以外定義的變量:Gearman Manager全局變量== NULL

$var = 200; 

    function worker_execution($job, &$log) { 

    global $var; 
    echo "global is: ".$var."\n"; 

} 

此代碼不會輸出200因變量爲空!?

你知道爲什麼如何啓用global作用域函數的範圍?

我認爲問題是,齒輪人員經理不包括工作人員文件,它是...它讀取它並直接進入「工作人員功能」,但仍然應該有一個解決方案來訪問變量在工作職能範圍之外?!

回答

0

顯示完整的代碼。如果你在調用$ worker-> work()之後聲明變量,它將不會被執行,因爲work()會進入無限循環。我確信工人代碼中的全局變量沒有問題。

+0

@Darhazer ...我將大量的數據從數據庫作爲工作負載傳遞給worker ...如果需要將DB對象發送給worker,我需要序列化它。這會在反序列化時造成問題嗎?所有的方法都是功能性的? – luigi7up

+0

這與你的全球$ var有什麼關係。 $ var初始化的位置 - 在將作業發送給工作人員的代碼中?序列化對象並將它們傳遞給worker是沒有問題的。你知道,工人應該在加載對象之前先加載它的定義,然後才能對數據進行反序列化。 –