浏览代码

ref #121 Public access to native GearmanClient instance

For access to many native client method without
write proxy method on top class

Example:
/** @var Mmoreram\GearmanBundle\Service\GearmanClient $gearman */
$gearman = $container->get('gearman');
$gearman->getNativeClient()->setTimeout(100);
$gearman->doNormalJob('AcmeBundleWorkerAcmeWorker~someJob', $params);
Veniamin Albaev 10 年之前
父节点
当前提交
7b0c8c4694
共有 1 个文件被更改,包括 20 次插入3 次删除
  1. 20 3
      Service/GearmanClient.php

+ 20 - 3
Service/GearmanClient.php

@@ -26,6 +26,13 @@ use Mmoreram\GearmanBundle\Service\Abstracts\AbstractGearmanService;
  */
 class GearmanClient extends AbstractGearmanService
 {
+    /**
+     * @var \GearmanClient
+     *
+     * Gearman native client instance
+     */
+    protected $gearmanClient;
+
     /**
      * @var GearmanCallbacksDispatcher
      *
@@ -75,6 +82,16 @@ class GearmanClient extends AbstractGearmanService
      */
     protected $returnCode;
 
+    /**
+     * @return \GearmanClient
+     */
+    public function getNativeClient(){
+        if ($this->gearmanClient === null){
+            $this->gearmanClient = new \GearmanClient();
+        }
+        return $this->gearmanClient;
+    }
+
     /**
      * Init tasks structure
      *
@@ -229,7 +246,7 @@ class GearmanClient extends AbstractGearmanService
      */
     protected function doEnqueue(array $worker, $params, $method, $unique)
     {
-        $gearmanClient = new \GearmanClient();
+        $gearmanClient = $this->getNativeClient();
         $this->assignServers($gearmanClient);
 
         $result = $gearmanClient->$method($worker['job']['realCallableName'], $params, $unique);
@@ -426,7 +443,7 @@ class GearmanClient extends AbstractGearmanService
      */
     public function getJobStatus($idJob)
     {
-        $gearmanClient = new \GearmanClient();
+        $gearmanClient = $this->getNativeClient();
         $this->assignServers($gearmanClient);
         $statusData = $gearmanClient->jobStatus($idJob);
 
@@ -642,7 +659,7 @@ class GearmanClient extends AbstractGearmanService
      */
     public function runTasks()
     {
-        $gearmanClient = new \GearmanClient();
+        $gearmanClient = $this->getNativeClient();
         $this->assignServers($gearmanClient);
 
         if ($this->settings['callbacks']) {