public static function process_shutdown_tasks() { // TODO: possibly do something like posix_getpid() != pts_client::$startup_pid in case shutdown function is called from a child process // Generate Phodevi Smart Cache if (pts_client::read_env('NO_PHODEVI_CACHE') == false && pts_client::read_env('EXTERNAL_PHODEVI_CACHE') == false) { if (pts_config::read_bool_config('PhoronixTestSuite/Options/General/UsePhodeviCache', 'TRUE')) { pts_storage_object::set_in_file(PTS_CORE_STORAGE, 'phodevi_smart_cache', phodevi::get_phodevi_cache_object(PTS_USER_PATH, PTS_CORE_VERSION)); } else { pts_storage_object::set_in_file(PTS_CORE_STORAGE, 'phodevi_smart_cache', null); } } if (is_array(self::$lock_pointers)) { foreach (array_keys(self::$lock_pointers) as $lock_file) { self::release_lock($lock_file); } } foreach (self::$forked_pids as $pid) { if (is_dir('/proc/' . $pid) && function_exists('posix_kill')) { posix_kill($pid, SIGKILL); } } }