本文整理汇总了PHP中phodevi::read_sensor方法的典型用法代码示例。如果您正苦于以下问题:PHP phodevi::read_sensor方法的具体用法?PHP phodevi::read_sensor怎么用?PHP phodevi::read_sensor使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类phodevi
的用法示例。
在下文中一共展示了phodevi::read_sensor方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: print_sensor
private static function print_sensor($sensor, $device)
{
if ($sensor[0] === 'cgroup') {
echo '- ' . phodevi::sensor_name($sensor) . PHP_EOL;
} else {
$sensor_object = new $sensor[2](0, $device);
echo '- ' . phodevi::sensor_object_name($sensor_object) . ': ' . phodevi::read_sensor($sensor_object) . ' ' . phodevi::read_sensor_object_unit($sensor_object) . PHP_EOL;
}
}
示例2: sensor_logging_update
public function sensor_logging_update()
{
if (!$this->sensor_logging_continue()) {
return false;
}
foreach ($this->sensors_to_monitor as $sensor) {
$sensor_value = phodevi::read_sensor($sensor);
if ($sensor_value != -1 && is_file($this->sensor_storage_dir . phodevi::sensor_identifier($sensor))) {
file_put_contents($this->sensor_storage_dir . phodevi::sensor_identifier($sensor), $sensor_value . PHP_EOL, FILE_APPEND);
}
}
}
示例3: run
public static function run($r)
{
pts_client::$display->generic_heading('Supported Sensors');
foreach (phodevi::supported_sensors() as $sensor) {
echo phodevi::sensor_name($sensor) . ': ' . phodevi::read_sensor($sensor) . ' ' . phodevi::read_sensor_unit($sensor) . PHP_EOL;
}
pts_client::$display->generic_heading('Unsupported Sensors');
foreach (phodevi::unsupported_sensors() as $sensor) {
echo '- ' . phodevi::sensor_name($sensor) . PHP_EOL;
}
echo PHP_EOL;
}
示例4: pts_monitor_update
public static function pts_monitor_update($sensor_list)
{
foreach ($sensor_list as $sensor) {
$sensor_value = phodevi::read_sensor($sensor);
if ($sensor_value != -1 && pts_module::is_file('logs/' . phodevi::sensor_object_identifier($sensor))) {
pts_module::save_file('logs/' . phodevi::sensor_object_identifier($sensor), $sensor_value, true);
}
}
}
示例5: system_monitor_task_check
public static function system_monitor_task_check(&$test_profile)
{
$parse_xml_file = $test_profile->get_file_parser_spec();
if ($parse_xml_file == false) {
return false;
}
self::$monitoring_sensors = array();
$test_directory = $test_profile->get_install_dir();
$results_parser_xml = new pts_parse_results_nye_XmlReader($parse_xml_file);
$monitor_sensor = $results_parser_xml->getXMLArrayValues('PhoronixTestSuite/SystemMonitor/Sensor');
$monitor_frequency = $results_parser_xml->getXMLArrayValues('PhoronixTestSuite/SystemMonitor/PollingFrequency');
$monitor_report_as = $results_parser_xml->getXMLArrayValues('PhoronixTestSuite/SystemMonitor/Report');
if (count($monitor_sensor) == 0) {
// No monitoring to do
return false;
}
if (self::$supported_sensors == null) {
// Cache this since this shouldn't change between tests/runs
self::$supported_sensors = phodevi::supported_sensors();
}
foreach (array_keys($monitor_sensor) as $i) {
// TODO: Right now we are looping through SystemMonitor tags, but right now pts-core only supports providing one monitor sensor as the result
$sensor = explode('.', $monitor_sensor[$i]);
if ($sensor == array('sys', 'time')) {
// sys.time is a special case since we are just timing the test length and thus don't need to fork the thread
$start_time = microtime(true);
array_push(self::$monitoring_sensors, array(0, $sensor, null, $start_time));
continue;
}
if (count($sensor) != 2 || !in_array($sensor, self::$supported_sensors)) {
// Not a sensor or it's not supported
continue;
}
if (!is_numeric($monitor_frequency[$i]) || $monitor_frequency < 0.5) {
// No polling frequency supplied
continue;
}
$monitor_frequency[$i] *= 1000000;
// Convert from seconds to micro-seconds
if (!in_array($monitor_report_as[$i], array('ALL', 'MAX', 'MIN', 'AVG'))) {
// Not a valid reporting type
continue;
}
if (!function_exists('pcntl_fork')) {
pts_client::$display->test_run_instance_error('PHP with PCNTL support enabled is required for this test.');
return false;
}
$monitor_file = tempnam($test_directory, '.monitor');
$pid = pcntl_fork();
if ($pid != -1) {
if ($pid) {
// Main process still
array_push(self::$monitoring_sensors, array($pid, $sensor, $monitor_report_as[$i], $monitor_file));
continue;
} else {
$sensor_values = array();
while (is_file(PTS_USER_LOCK)) {
array_push($sensor_values, phodevi::read_sensor($sensor));
file_put_contents($monitor_file, implode("\n", $sensor_values));
usleep($monitor_frequency[$i]);
}
exit(0);
}
}
}
return count(self::$monitoring_sensors) > 0;
}
示例6: cpu_default_frequency
public static function cpu_default_frequency($cpu_core = 0)
{
// Find out the processor frequency
$info = null;
// First, the ideal way, with modern CPUs using CnQ or EIST and cpuinfo reporting the current
if (is_file('/sys/devices/system/cpu/cpu' . $cpu_core . '/cpufreq/scaling_max_freq')) {
$info = pts_file_io::file_get_contents('/sys/devices/system/cpu/cpu' . $cpu_core . '/cpufreq/scaling_max_freq');
$info = intval($info) / 1000000;
if ($info > 9) {
// For some reason on Linux 3.10 the scaling_max_freq is reported as 25GHz...
$info = null;
}
}
if ($info == null && isset(phodevi::$vfs->cpuinfo)) {
$cpu_mhz = self::read_cpuinfo_line('cpu MHz');
$info = $cpu_mhz / 1000;
if (empty($info)) {
$cpu_mhz = self::read_cpuinfo_line('clock');
$info = $cpu_mhz / 1000;
}
} else {
if ($info == null && phodevi::is_bsd()) {
$info = phodevi_bsd_parser::read_sysctl(array('dev.cpu.0.freq_levels'));
if ($info != null) {
// Popping the top speed off of dev.cpu.0.freq_levels should be the default/highest supported frequency
$info = pts_arrays::first_element(explode(' ', str_replace('/', ' ', $info)));
if (!is_numeric($info)) {
$info = null;
}
}
if ($info == null) {
$info = phodevi_bsd_parser::read_sysctl(array('hw.acpi.cpu.px_global', 'machdep.est.frequency.target', 'hw.cpuspeed'));
}
if ($info == null) {
// dev.cpu.0.freq seems to be the real/current frequency, affected by power management, etc so only use as last fallback
$info = phodevi_bsd_parser::read_sysctl(array('dev.cpu.0.freq'));
}
if (is_numeric($info)) {
$info = $info / 1000;
} else {
$info = null;
}
} else {
if ($info == null && phodevi::is_windows()) {
$info = phodevi_windows_parser::read_cpuz('Processor 1', 'Stock frequency');
if ($info != null) {
if (($e = strpos($info, ' MHz')) !== false) {
$info = substr($info, 0, $e);
}
$info = $info / 1000;
}
} else {
if ($info == null) {
$info = phodevi::read_sensor(array('cpu', 'freq'));
if ($info > 1000) {
// Convert from MHz to GHz
$info = $info / 1000;
}
}
}
}
}
return pts_math::set_precision($info, 2);
}
示例7: run
public static function run($r)
{
pts_openbenchmarking::refresh_repository_lists();
pts_client::$display->generic_heading('Interactive Benchmarking');
echo 'System Hardware:' . PHP_EOL . phodevi::system_hardware(true) . (phodevi::read_property('motherboard', 'serial-number') != null ? PHP_EOL . 'System Serial Number: ' . phodevi::read_property('motherboard', 'serial-number') : null) . PHP_EOL . PHP_EOL . PHP_EOL;
$reboot_on_exit = false;
do {
$options = array('RUN_TEST' => 'Run A Test', 'RUN_SUITE' => 'Run A Suite [A Collection Of Tests]', 'RUN_SYSTEM_TEST' => 'Run Complex System Test', 'SHOW_INFO' => 'Show System Hardware / Software Information', 'SHOW_SENSORS' => 'Show Auto-Detected System Sensors', 'SET_RUN_COUNT' => 'Set Test Run Repetition');
if (count(pts_client::saved_test_results()) > 0) {
$options['BACKUP_RESULTS_TO_USB'] = 'Backup Results To Media Storage';
}
$options['EXIT'] = $reboot_on_exit ? 'Exit & Reboot' : 'Exit';
$response = pts_user_io::prompt_text_menu('Select Task', $options, false, true);
switch ($response) {
case 'RUN_TEST':
$supported_tests = pts_openbenchmarking::available_tests();
$supported_tests = pts_types::identifiers_to_test_profile_objects($supported_tests, false, true);
$longest_title_length = 0;
foreach ($supported_tests as $i => &$test_profile) {
if ($test_profile->get_title() == null) {
unset($supported_tests[$i]);
continue;
}
$longest_title_length = max($longest_title_length, strlen($test_profile->get_title()));
}
$t = array();
foreach ($supported_tests as $i => &$test_profile) {
if ($test_profile instanceof pts_test_profile) {
$t[$test_profile->get_identifier()] = sprintf('%-' . ($longest_title_length + 1) . 'ls - %-10ls', $test_profile->get_title(), $test_profile->get_test_hardware_type());
}
}
$supported_tests = $t;
asort($supported_tests);
$tests_to_run = pts_user_io::prompt_text_menu('Select Test', $supported_tests, true, true);
$tests_to_run = explode(',', $tests_to_run);
pts_test_installer::standard_install($tests_to_run);
$run_manager = new pts_test_run_manager(false, 2);
$run_manager->standard_run($tests_to_run);
if ($run_manager != false) {
pts_client::display_web_page(PTS_SAVE_RESULTS_PATH . $run_manager->get_file_name() . '/index.html', null, true, true);
}
break;
case 'RUN_SUITE':
$possible_suites = pts_openbenchmarking::available_suites();
foreach (array_map('strtolower', pts_types::subsystem_targets()) as $subsystem) {
array_push($possible_suites, 'pts/' . $subsystem);
}
$suites_to_run = pts_user_io::prompt_text_menu('Select Suite', $possible_suites, true);
foreach (explode(',', $suites_to_run) as $suite_to_run) {
pts_test_installer::standard_install($suite_to_run);
$run_manager = new pts_test_run_manager(false, 2);
$run_manager->standard_run($suite_to_run);
}
break;
case 'SELECT_DRIVE_MOUNT':
self::select_drive_mount();
break;
case 'RUN_SYSTEM_TEST':
pts_client::$display->generic_heading('System Test');
$system_tests = array('apache', 'c-ray', 'ramspeed', 'postmark');
pts_test_installer::standard_install($system_tests);
$run_manager = new pts_test_run_manager(false, 2);
$run_manager->standard_run($system_tests);
if ($run_manager != false) {
pts_client::display_web_page(PTS_SAVE_RESULTS_PATH . $run_manager->get_file_name() . '/index.html', null, true, true);
}
break;
case 'SHOW_INFO':
pts_client::$display->generic_heading('System Software / Hardware Information');
echo 'Hardware:' . PHP_EOL . phodevi::system_hardware(true) . PHP_EOL . PHP_EOL;
echo 'Software:' . PHP_EOL . phodevi::system_software(true) . PHP_EOL . PHP_EOL;
break;
case 'SHOW_SENSORS':
pts_client::$display->generic_heading('Detected System Sensors');
foreach (phodevi::supported_sensors() as $sensor) {
echo phodevi::sensor_name($sensor) . ': ' . phodevi::read_sensor($sensor) . ' ' . phodevi::read_sensor_unit($sensor) . PHP_EOL;
}
break;
case 'SET_RUN_COUNT':
$run_count = pts_user_io::prompt_user_input('Set the minimum number of times each test should repeat', false);
putenv('FORCE_TIMES_TO_RUN=' . trim($run_count));
break;
case 'BACKUP_RESULTS_TO_USB':
pts_client::$display->generic_heading('Backing Up Test Results');
foreach (pts_file_io::glob('/media/*') as $media_dir) {
if (!is_writable($media_dir)) {
echo PHP_EOL . $media_dir . ' is not writable.' . PHP_EOL;
continue;
}
echo PHP_EOL . 'Writing Test Results To: ' . $media_dir . PHP_EOL;
pts_file_io::copy(PTS_SAVE_RESULTS_PATH, $media_dir . '/');
break;
}
break;
}
echo PHP_EOL . PHP_EOL;
} while ($response != 'EXIT');
if ($reboot_on_exit) {
if (is_dir('/media/pts-auto-mount')) {
pts_file_io::delete('/media/pts-auto-mount/pts', null, true);
//.........这里部分代码省略.........
示例8: tick_thread
protected static function tick_thread()
{
static $last_phoromatic_log = 0;
while (true) {
$j = array();
$log_size = pts_client::$pts_logger->get_log_file_size();
if ($log_size != $last_phoromatic_log) {
$phoromatic_log = file_get_contents(pts_client::$pts_logger->get_log_file_location());
$last_phoromatic_log = $log_size;
$j['phoromatic']['client-log'] = $phoromatic_log;
}
foreach (phodevi::supported_sensors() as $sensor) {
$j['phoromatic']['stats']['sensors'][phodevi::sensor_name($sensor)] = array('value' => phodevi::read_sensor($sensor), 'unit' => phodevi::read_sensor_unit($sensor));
}
$j['phoromatic']['stats']['uptime'] = ceil(phodevi::system_uptime() / 60);
$server_response = phoromatic::upload_to_remote_server(array('r' => 'tick', 'j' => json_encode($j)));
$server_response = json_decode($server_response, true);
if ($server_response && isset($server_response['phoromatic']['tick_thread'])) {
switch ($server_response['phoromatic']['tick_thread']) {
case 'reboot':
if (pts_client::executable_in_path('reboot')) {
shell_exec('reboot');
}
break;
case 'halt-testing':
touch(PTS_USER_PATH . 'halt-testing');
break;
}
}
sleep(60);
}
}
示例9: run
//.........这里部分代码省略.........
continue;
}
if ($is_moscow && pts_test_install_request::test_files_available_locally($test_profile) == false) {
// Don't show tests where files need to be downloaded
unset($supported_tests[$i]);
continue;
}
$longest_title_length = max($longest_title_length, strlen($test_profile->get_title()));
}
$t = array();
foreach ($supported_tests as $i => &$test_profile) {
if ($test_profile instanceof pts_test_profile) {
$t[$test_profile->get_identifier()] = sprintf('%-' . ($longest_title_length + 1) . 'ls - %-10ls', $test_profile->get_title(), $test_profile->get_test_hardware_type());
}
}
$supported_tests = $t;
asort($supported_tests);
$tests_to_run = pts_user_io::prompt_text_menu('Select Test', $supported_tests, true, true);
$tests_to_run = explode(',', $tests_to_run);
pts_test_installer::standard_install($tests_to_run);
$run_manager = pts_test_run_manager::standard_run($tests_to_run, pts_c::defaults_mode | pts_c::auto_mode);
if ($run_manager != false) {
pts_client::display_web_page(PTS_SAVE_RESULTS_PATH . $run_manager->get_file_name() . '/index.html', null, true, true);
}
break;
case 'RUN_SUITE':
$possible_suites = pts_openbenchmarking::available_suites();
foreach (array_map('strtolower', pts_types::subsystem_targets()) as $subsystem) {
array_push($possible_suites, 'pts/' . $subsystem);
}
$suites_to_run = pts_user_io::prompt_text_menu('Select Suite', $possible_suites, true);
foreach (explode(',', $suites_to_run) as $suite_to_run) {
pts_test_installer::standard_install($suite_to_run);
pts_test_run_manager::standard_run($suite_to_run, pts_c::defaults_mode | pts_c::auto_mode);
}
break;
case 'SELECT_DRIVE_MOUNT':
self::select_drive_mount();
break;
case 'RUN_SYSTEM_TEST':
pts_client::$display->generic_heading('System Test');
$system_tests = array('apache', 'c-ray', 'ramspeed', 'postmark');
pts_test_installer::standard_install($system_tests);
$run_manager = pts_test_run_manager::standard_run($system_tests, pts_c::defaults_mode | pts_c::auto_mode);
if ($run_manager != false) {
pts_client::display_web_page(PTS_SAVE_RESULTS_PATH . $run_manager->get_file_name() . '/index.html', null, true, true);
}
break;
case 'SHOW_INFO':
pts_client::$display->generic_heading('System Software / Hardware Information');
echo 'Hardware:' . PHP_EOL . phodevi::system_hardware(true) . PHP_EOL . PHP_EOL;
echo 'Software:' . PHP_EOL . phodevi::system_software(true) . PHP_EOL . PHP_EOL;
break;
case 'SHOW_SENSORS':
pts_client::$display->generic_heading('Detected System Sensors');
foreach (phodevi::supported_sensors() as $sensor) {
echo phodevi::sensor_name($sensor) . ': ' . phodevi::read_sensor($sensor) . ' ' . phodevi::read_sensor_unit($sensor) . PHP_EOL;
}
break;
case 'SET_RUN_COUNT':
$run_count = pts_user_io::prompt_user_input('Set the minimum number of times each test should repeat', false);
putenv('FORCE_TIMES_TO_RUN=' . trim($run_count));
break;
case 'BACKUP_RESULTS_TO_USB':
pts_client::$display->generic_heading('Backing Up Test Results');
if ($is_moscow) {
$drives = pts_file_io::glob('/dev/sd*');
sort($drives);
if (count($drives) > 0 && is_writable('/media/')) {
$select_drive = pts_user_io::prompt_text_menu('Select Drive / Partition To Save Results', $drives);
echo PHP_EOL . 'Attempting to mount: ' . $select_drive . PHP_EOL;
mkdir('/media/00-results-backup');
exec('mount ' . $select_drive . ' /media/00-results-backup');
}
}
foreach (pts_file_io::glob('/media/*') as $media_dir) {
if (!is_writable($media_dir)) {
echo PHP_EOL . $media_dir . ' is not writable.' . PHP_EOL;
continue;
}
echo PHP_EOL . 'Writing Test Results To: ' . $media_dir . PHP_EOL;
pts_file_io::copy(PTS_SAVE_RESULTS_PATH, $media_dir . '/');
break;
}
if ($is_moscow && is_dir('/media/00-results-backup')) {
exec('umount /media/00-results-backup');
rmdir('/media/00-results-backup');
}
break;
}
echo PHP_EOL . PHP_EOL;
} while ($response != 'EXIT');
if ($reboot_on_exit) {
if (is_dir('/media/pts-auto-mount')) {
pts_file_io::delete('/media/pts-auto-mount/pts', null, true);
exec('umount /media/pts-auto-mount 2>&1');
}
exec('reboot');
}
}