Root ourselves. chdir(dirname(__DIR__)); date_default_timezone_set('Africa/Johannesburg'); #-> Bootstrap. require_once 'init_autoloader.php'; #-> Our primary workspace for getting stuff done. class Workspace { /** * @var \React\ZMQ\SocketWrapper */ static private $mqClient; /** * Initialize. */ static public function init() { self::$mqClient = (new \ZMQContext())->getSocket(\ZMQ::SOCKET_PUSH, 'WebsocketWorkerPublisher'); self::$mqClient->connect("tcp://127.0.0.1:90"); } /** * Send broadcast request to socket server. * @param GearmanJob $job * @return null */ static public function broadcast(GearmanJob $job) { #-> Instruct socket server to do a broadcast. self::$mqClient->send($job->workload()); } } #-> Get up and running. Workspace::init(); #-> Register as a gearman worker. $worker = new GearmanWorker(); $worker->addServer(); $worker->addFunction('Broadcast', array('Workspace', 'broadcast')); #-> Wait for jobs to come in. while ($worker->work()) { ; }