예제 #1
0
파일: daemon.php 프로젝트: raquelsa/Joomla
 /**
  * Load an object or array into the application configuration object.
  *
  * @param   mixed  $data  Either an array or object to be loaded into the configuration object.
  *
  * @return  JCli  Instance of $this to allow chaining.
  *
  * @since   11.1
  */
 public function loadConfiguration($data)
 {
     // Execute the parent load method.
     parent::loadConfiguration($data);
     /*
      * Setup some application metadata options.  This is useful if we ever want to write out startup scripts
      * or just have some sort of information available to share about things.
      */
     // The application author name.  This string is used in generating startup scripts and has
     // a maximum of 50 characters.
     $tmp = (string) $this->config->get('author_name', 'Joomla Platform');
     $this->config->set('author_name', strlen($tmp) > 50 ? substr($tmp, 0, 50) : $tmp);
     // The application author email.  This string is used in generating startup scripts.
     $tmp = (string) $this->config->get('author_email', '*****@*****.**');
     $this->config->set('author_email', filter_var($tmp, FILTER_VALIDATE_EMAIL));
     // The application name.  This string is used in generating startup scripts.
     $tmp = (string) $this->config->get('application_name', 'JApplicationDaemon');
     $this->config->set('application_name', (string) preg_replace('/[^A-Z0-9_-]/i', '', $tmp));
     // The application description.  This string is used in generating startup scripts.
     $tmp = (string) $this->config->get('application_description', 'A generic Joomla Platform application.');
     $this->config->set('application_description', filter_var($tmp, FILTER_SANITIZE_STRING));
     /*
      * Setup the application path options.  This defines the default executable name, executable directory,
      * and also the path to the daemon process id file.
      */
     // The application executable daemon.  This string is used in generating startup scripts.
     $tmp = (string) $this->config->get('application_executable', basename($this->input->executable));
     $this->config->set('application_executable', $tmp);
     // The home directory of the daemon.
     $tmp = (string) $this->config->get('application_directory', dirname($this->input->executable));
     $this->config->set('application_directory', $tmp);
     // The pid file location.  This defaults to a path inside the /tmp directory.
     $name = $this->config->get('application_name');
     $tmp = (string) $this->config->get('application_pid_file', strtolower('/tmp/' . $name . '/' . $name . '.pid'));
     $this->config->set('application_pid_file', $tmp);
     /*
      * Setup the application identity options.  It is important to remember if the default of 0 is set for
      * either UID or GID then changing that setting will not be attempted as there is no real way to "change"
      * the identity of a process from some user to root.
      */
     // The user id under which to run the daemon.
     $tmp = (int) $this->config->get('application_uid', 0);
     $options = array('options' => array('min_range' => 0, 'max_range' => 65000));
     $this->config->set('application_uid', filter_var($tmp, FILTER_VALIDATE_INT, $options));
     // The group id under which to run the daemon.
     $tmp = (int) $this->config->get('application_gid', 0);
     $options = array('options' => array('min_range' => 0, 'max_range' => 65000));
     $this->config->set('application_gid', filter_var($tmp, FILTER_VALIDATE_INT, $options));
     // Option to kill the daemon if it cannot switch to the chosen identity.
     $tmp = (bool) $this->config->get('application_require_identity', 1);
     $this->config->set('application_require_identity', $tmp);
     /*
      * Setup the application runtime options.  By default our execution time limit is infinite obviously
      * because a daemon should be constantly running unless told otherwise.  The default limit for memory
      * usage is 128M, which admittedly is a little high, but remember it is a "limit" and PHP's memory
      * management leaves a bit to be desired :-)
      */
     // The maximum execution time of the application in seconds.  Zero is infinite.
     $tmp = $this->config->get('max_execution_time');
     if ($tmp !== null) {
         $this->config->set('max_execution_time', (int) $tmp);
     }
     // The maximum amount of memory the application can use.
     $tmp = $this->config->get('max_memory_limit', '256M');
     if ($tmp !== null) {
         $this->config->set('max_memory_limit', (string) $tmp);
     }
     return $this;
 }