Пример #1
0
 /**
  * select all running scripts from scriptsStatuses Table and check PID files.
  *
  * @return array
  * @access public
  */
 function getRunningScript()
 {
     //check temporary dir for orchan PID files
     //get temporary path
     $tempPath = CMS_file::getTmpPath();
     //computes the directory to put files in
     $tempDir = @dir($tempPath);
     if (!is_object($tempDir)) {
         return array();
     }
     //script application label
     $scriptAppLbl = processManager::getAppCode();
     //Automatic list of directory content
     //Displayed in alphabetical order (noted on Windows platforms)
     $PIDFiles = array();
     while (false !== ($file = $tempDir->read())) {
         if (stripos($file, $scriptAppLbl) !== false && io::strpos($file, ".ok") === false) {
             $PIDFiles[] = $file;
         }
     }
     //check the table
     $sql = "\n\t\t\tselect\n\t\t\t\t*\n\t\t\tfrom\n\t\t\t\tscriptsStatuses\n\t\t\torder by launchDate_ss\n\t\t\t";
     $q = new CMS_query($sql);
     $scripts = array();
     $modules = array();
     while ($data = $q->getArray()) {
         $PIDFileStatus = 0;
         if (array_search($data["scriptName_ss"], $PIDFiles) !== false) {
             $process = new processManager($data["scriptName_ss"]);
             if (@is_file($process->getPIDFilePath() . ".ok")) {
                 $PIDFileStatus = 3;
             } else {
                 $PIDFileStatus = 1;
             }
             $key = array_search($data["scriptName_ss"], $PIDFiles);
             unset($PIDFiles[$key]);
         }
         $scriptTitle = '';
         //instanciate module if not exists
         if (isset($data['module_ss']) && $data['module_ss'] != self::MASTER_SCRIPT_NAME) {
             if (!isset($modules[$data['module_ss']])) {
                 $modules[$data['module_ss']] = CMS_modulesCatalog::getByCodename($data['module_ss']);
             }
             if (is_object($modules[$data['module_ss']])) {
                 $scriptTitle = $modules[$data['module_ss']]->scriptInfo(unserialize($data['parameters_ss']));
             } else {
                 $scriptTitle = 'Error : script module not set';
             }
         } elseif ($data['module_ss'] == self::MASTER_SCRIPT_NAME) {
             $scriptTitle = self::MASTER_SCRIPT_NAME;
         } else {
             $scriptTitle = 'Error : script module not set';
         }
         $script = array("Title" => $scriptTitle, "Date" => $data["launchDate_ss"], "PIDFile" => $PIDFileStatus);
         $scripts[] = $script;
     }
     //add orphan PIDFiles to the report
     foreach ($PIDFiles as $anOrphanPIDFile) {
         $script = array("Title" => str_replace('_', ' ', str_replace('bgscript_', '', $anOrphanPIDFile)), "Date" => '', "PIDFile" => '2');
         $scripts[] = $script;
     }
     return $scripts;
 }