本文整理汇总了PHP中log::getTotalTime方法的典型用法代码示例。如果您正苦于以下问题:PHP log::getTotalTime方法的具体用法?PHP log::getTotalTime怎么用?PHP log::getTotalTime使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类log
的用法示例。
在下文中一共展示了log::getTotalTime方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: analyze
/**
* Берем таблицы, последний анализ, которых был ранее чем analyze_min_age секунд назад
* или количество изменненных строк > analyze_changed_factor * кол-во строк.
* Сначала идут по времени последнего анализа.
* Вопрос в том, что если сработал обычный автовакуум, то в autovacuum_log статистика не поменяется,
* т.е. не будет известно сколько строк в реальности изменилось с последнего анализа.
* Решение: не принимать во внимание, т.е. просто соблюдаем условия выше. Может случиться "лишний" анализ, не беда.
*/
public function analyze($db_alias, $mode = self::MODE_ANALYZE)
{
$cfg = $this->_config[$mode];
$log = new log($cfg['log_file'], 'w');
// !!! SERVER добавить (для альфы/беты).
$DB = new DB($db_alias);
$log->linePrefix = $this->_config['log_line_prefix'];
$log->writeln('Получаем список таблиц');
$last_av_col = 'COALESCE(maintenance.max(' . ($mode == self::MODE_ANALYZE ? 'pt.last_analyze, pt.last_autoanalyze, ' : '') . "pt.last_vacuum, pt.last_autovacuum), 'epoch')";
$sql = "\n WITH w_stat as (\n SELECT ts.*, pt.*, ts.relid IS NULL as _is_new, {$last_av_col} as _last_av\n FROM pg_stat_user_tables pt\n LEFT JOIN\n maintenance.table_stat ts\n ON ts.relid = pt.relid\n WHERE pt.schemaname = 'public'\n AND pt.n_live_tup + pt.n_dead_tup > 0\n )\n (\n (SELECT *, 0 as ord, 0.00 as ord2 FROM w_stat WHERE (_is_new OR _last_av + interval '?i seconds' <= now()))\n UNION ALL\n (SELECT *, 1, tup_factor FROM w_stat WHERE tup_factor >= ?f)\n )\n ORDER BY ord, ord2 DESC, _last_av\n ";
$tbls = $DB->rows($sql, $cfg['min_age'], $cfg['changed_factor']);
$acnt = 0;
$log->writeln(count($tbls) . ' таблиц');
foreach ($tbls as $t) {
if ($log->getTotalTime(null) >= $cfg['max_duration']) {
$log->writeln('Время истекло.');
break;
}
$DB->query(($mode == self::MODE_VACUUM ? 'VACUUM ' : 'ANALYZE') . " VERBOSE {$t['relname']}");
$cmpls[(int) ($t['_is_new'] == 't')][] = $t['relid'];
$log->writeln(pg_last_notice(DB::$connections[$db_alias]));
++$acnt;
}
// Обновляем статистику.
if ($cmpls[0]) {
$cols = $this->_mt_cols;
unset($cols[0], $cols[1]);
$lcols = implode(',', $cols);
$rcols = 'pt.' . implode(', pt.', $cols);
$sql = "UPDATE maintenance.table_stat ts SET ({$lcols}) = ({$rcols}) FROM pg_stat_user_tables pt WHERE pt.relid IN (?l) AND ts.relid = pt.relid";
$DB->query($sql, $cmpls[0]);
}
if ($cmpls[1]) {
$cols = implode(',', $this->_mt_cols);
$sql = "INSERT INTO maintenance.table_stat ({$cols}) SELECT {$cols} FROM pg_stat_user_tables WHERE relid IN (?l)";
$DB->query($sql, $cmpls[1]);
}
// Удаляем лишние таблицы, типа catalog_positions2 (создаются/удаляются автоматом)
$DB->query('DELETE FROM maintenance.table_stat ts WHERE NOT EXISTS (SELECT 1 FROM pg_stat_user_tables WHERE relid = ts.relid)');
$log->writeln("Обработано {$acnt} таблиц");
}
示例2: time
$log->TRACE($parser->cleanup());
}
//Очистка "мусора" создающегося при вставке в визивиг изображений и не сохранении комментария (таблицы commune_attach, file_commune и articles_comments_files, file
if (date('H') == 23) {
//$log->TRACE( commune::removeWysiwygTrash());
$log->TRACE(articles::removeWysiwygTrash());
}
// Каждый день первого числа формируем документ ITO за прошлый месяц
/*
if(date('j') == 1 && date('H') == 1) {
$prevMonth = time() - 3600 * 24 * 2; // Вычитаем два дня на всякий случай
$log->TRACE( sbr_meta::generateDocITO(array(0 => date('Y-m-01', $prevMonth), 1 => date('Y-m-t', $prevMonth)), false, 'xlsx'));
}
*/
//Очистка логов ПСКБ из базы
/*
if(date('H') == 5) {
// $log_pskb = new log_pskb();
// $log->TRACE( $log_pskb->clearCloneData() );
// $log->TRACE( $log_pskb->packOldData(true) );
}
*/
//////////////////// !!! добавлять НАД этой строкой !!! ///////////////////////
$mt = new Maintenance();
if (in_array($H, array(2, 9, 21))) {
$log->TRACE($mt->analyze('master', Maintenance::MODE_VACUUM));
} elseif (in_array($H, array(3, 6, 10, 13, 16, 19, 22))) {
$log->TRACE($mt->analyze('master', Maintenance::MODE_ANALYZE));
}
$log->writeln('------------ END hourly (total time: ' . $log->getTotalTime() . ') ---------------');
示例3: log
<?php
//TODO Файл нужен только для тестирования. Весь функционал отсюда делается в hourly.php
// Хотя проблем его вызов не принесет
ini_set('max_execution_time', 0);
ini_set('memory_limit', '512M');
require_once 'classes/config.php';
require_once 'classes/log.php';
require_once 'classes/multi_log.php';
$log = new log('hourly_freelancer/' . SERVER . '-%d%m%Y[%H].log', 'w');
$log->writeln('------------ BEGIN hourly (start time: ' . date('d.m.Y H:i:s') . ') -----');
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
$mail = new smail();
//За сутки до завершения срока действия закрепления
$mail->remindFreelancerbindsProlong();
//После того, как закрепление опустилось ниже середины списка закреплений (и в списке больше одного закрепления)
$mail->remindFreelancerbindsUp();
$log->writeln('------------ END hourly_freelancer (total time: ' . $log->getTotalTime() . ') ---------------');