Gearman met PHP/Net_Gearman, werknemers die taken uitvoeren die worden aangeroepen door andere werknemers, reageren niet meer

Ik gebruik versnellingshandel om langlopende taken over meerdere werkerservers te verdelen. Voor een van mijn werknemertaken probeer ik een andere achtergrondtaak aan te roepen. De achtergrondtaak wordt met succes door een andere werknemer uitgevoerd ... maar dat werkproces reageert niet op nieuwe opdrachten die achteraf aan de versnellingsbakken worden toegevoegd.

Weet iemand wat er aan de hand is? Is dit een kenmerk van gearman?

EDIT:

Als ik mijn werknemers opnieuw opstart, herhalen ze de taak die door de andere werknemer in de wachtrij is geplaatst. Gearman lijkt niet te herkennen dat de taak is voltooid.

EDIT 2:

geprobeerd:

var_dump($this->conn);
var_dump($this->handle);

Vanuit de functie van de werknemer die wordt gebeld door mijn andere werknemer. Dit is de uitvoer die ik ontvang:

NULL
string(0) ""

EDIT 3:

Nou ik kwam met een hackey-manier om dit op te lossen. Het volgende is het relevante codefragment. Ik gebruik codeigniter voor mijn project en mijn gearman-servers worden als een array opgeslagen. Ik test eenvoudig in mijn baancode als de verbinding nul is, en als zo opnieuw vestig het gebruikend een willekeurige versnellingsserver. Ik ben er zeker van dat dit rotzooi is, dus als iemand een beter inzicht heeft, zou ik het zeer op prijs stellen.

class Net_Gearman_Job_notification_vc_friends_new_user extends Net_Gearman_Job_Common{

private $CI;

function __construct(){
    $this->CI =& get_instance();

    if(!$this->conn){

        $gearman = $this->CI->config->item('gearman');
        $servers = $gearman['servers'];
        $key = array_rand($servers);            
        $this->conn = Net_Gearman_Connection::connect($servers[$key]);

    }
}
1

1 antwoord

Dacht het uit! behoorlijk stom eigenlijk, vergat te bellen bovenliggende :: __ construct (); in mijn constructor ... oeps.

0
toegevoegd