- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
foreach($this->_logs as $log)
{
if($log[1]!==CLogger::LEVEL_PROFILE)
continue;
list($message,$level,$category,$timestamp)=$log;
if(!strncasecmp($message,'begin:',6))
{
$log[0]=substr($message,6);
$stack[]=$log;
}
elseif(!strncasecmp($message,'end:',4))
{
$token=substr($message,4);
if(($last=array_pop($stack))!==null && $last[0]===$token)
{
$delta=$log[3]-$last[3];
$this->_timings[]=array($message,$category,$delta);
}
else
throw new CException(Yii::t('yii','CProfileLogRoute found a mismatching code block "{token}". Make sure the calls to Yii::beginProfile() and Yii::endProfile() be properly nested.',
array('{token}'=>$token)));
}
}
Yii 1, реализация профайлинга через лог (ну потому что есть же лог, зачем еще сущности плодить, классы же долго грузятся, а у нас самый лайтвейт фреймворк). Чтобы уж точно наверняка, код дублируется в CProfileLogRoute.
https://github.com/yiisoft/yii/blob/11c3010a82ce2c25332baacce568ff89e451896a/framework/logging/CLogger.php#L294
https://github.com/yiisoft/yii/blob/11c3010a82ce2c25332baacce568ff89e451896a/framework/logging/CProfileLogRoute.php#L137
Fike 11.12.2014 12:54 # 0
у них и во второй версии то же самое
статичный суперкласс (привет, любители изолированного тестирования! не хотите ли соснуть свежих хуйцов и запускать каждый тест в отдельном процессе?) берет на себя функции профилирования (https://github.com/yiisoft/yii2/blob/39714b890da3bb4483a0c73c0264e183ceb03146/framework/BaseYii.php#L444), получает откуда-то логгер (https://github.com/yiisoft/yii2/blob/39714b890da3bb4483a0c73c0264e183ceb03146/framework/BaseYii.php#L359, lazyload на уровне), который все так же перебирает записи (https://github.com/yiisoft/yii2/blob/39714b890da3bb4483a0c73c0264e183ceb03146/framework/log/Logger.php#L263). замечательное нововведение - отказ от строгого нестинга повлечет за собой просто игнорирование записи, а не эксепшен
скажите, а вторая версия этого великолепия - это просто первая, по которой прошелся php-cs-fixer?
p.s. отдельный охуенчик - вот этот метод https://github.com/yiisoft/yii2/blob/39714b890da3bb4483a0c73c0264e183ceb03146/framework/log/Logger.php#L181
guest 12.12.2014 17:04 # 0
guest 15.12.2014 23:28 # 0
guest 16.12.2014 00:51 # 0
guest 23.12.2014 13:34 # 0
Есть и нормальные фреймворки на пхп, но у настоящих пхпшников с ними работать не получается, слишком сложно.
guest 23.12.2014 14:55 # 0
guest 23.12.2014 16:00 # 0
guest 23.12.2014 19:08 # 0
https://github.com/scarych/psi/wiki
roman-kashitsyn 23.12.2014 20:14 # +1
> protected $_ego = null, $_dual = null, $_quants = array();
Попахивает новым мемом
inkanus-gray 23.12.2014 20:21 # 0
guest 23.12.2014 21:48 # 0
Кобеляж?
3.14159265 23.12.2014 22:02 # 0
Fike 23.12.2014 21:36 # 0