瀏覽代碼

auto-unique-value-generation

Alexandru Miron 11 年之前
父節點
當前提交
f7b9184078
共有 2 個文件被更改,包括 22 次插入0 次删除
  1. 2 0
      DependencyInjection/Configuration.php
  2. 20 0
      Service/GearmanClient.php

+ 2 - 0
DependencyInjection/Configuration.php

@@ -82,6 +82,8 @@ class Configuration implements ConfigurationInterface
                         ->end()
                         ->scalarNode('job_prefix')
                             ->defaultValue(null)
+                        ->scalarNode('generate-unique-key')
+                            ->defaultValue(true)
                         ->end()
                     ->end()
                 ->end()

+ 20 - 0
Service/GearmanClient.php

@@ -167,6 +167,10 @@ class GearmanClient extends AbstractGearmanService
     {
         $worker = $this->getJob($jobName);
 
+        if ($this->settings['generate-unique-key']) {
+            $unique = $this->generateUniqueKey($jobName, $params);
+        }
+
         if (false !== $worker) {
 
             return $this->doEnqueue($worker, $params, $method, $unique);
@@ -529,6 +533,10 @@ class GearmanClient extends AbstractGearmanService
      */
     private function enqueueTask($name, $params, $context, $unique, $method)
     {
+        if ($this->settings['generate-unique-key']) {
+            $unique = $this->generateUniqueKey($name, $params);
+        }
+
         $task = array(
             'name'      =>  $name,
             'params'    =>  $params,
@@ -590,4 +598,16 @@ class GearmanClient extends AbstractGearmanService
 
         return $gearmanClient->runTasks();
     }
+
+    /**
+     * Generates a unique string if null
+     *
+     * @param string $name
+     * @param string $params
+     * @return null|string
+     */
+    private function generateUniqueKey($name, $params = '')
+    {
+        return md5($name.$params);
+    }
 }