/**
  * Setup.
  *
  * @param string $config Gearman configuration name
  */
 protected function setup($config = 'default')
 {
     $this->setttings = Gearman::config($config);
     if (!isset($this->setttings)) {
         throw new ConfigException("{$config} is not a valid li3_gearman configuration");
     } elseif (empty($this->setttings['servers'])) {
         throw new ConfigException("{$config} defines no servers");
     }
     if (!empty($this->memlimit)) {
         $units = ['K' => 1024, 'M' => 1024 * 1024, 'G' => 1024 * 1024 * 1024];
         $memoryLimit = ini_get('memory_limit');
         $memoryLimit = (int) substr($memoryLimit, 0, -1) * $units[$memoryLimit[strlen($memoryLimit) - 1]];
         $this->settings['memoryLimit'] = (int) floor($memoryLimit * ($this->memlimit / 100));
     }
     if (isset($this->environment)) {
         Environment::set($this->environment);
     } else {
         $this->environment = Environment::get();
         if (!$this->environment) {
             throw new ConfigException("Could not determine environment");
         }
     }
     foreach ([SIGTERM, SIGHUP] as $signal) {
         if (!pcntl_signal($signal, [$this, 'signal'])) {
             throw new RuntimeException("Could not register signal {$signal}");
         }
     }
 }