Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #68, АВГУСТ 2004 г.

220 на спидометре

Никита Кислицын

Xakep, номер #068, стр. 068-106-3


В абсолютно тупом цикле прогоняются все элементы массива, пока не встретится имеющий id, равный искомому. В этом случае цикл досрочно завершается оператором break, а в переменной $i находится указатель на искомый элемент массива. Можно было, конечно, красивее переписать этот кусочек с использованием цикла for, сэкономив пару строк кода, но для лучшего понимания тобой я решил написать все так вот прямолинейно. Построение статистики едва ли заслуживает пристального внимания. В цикле по всем элементам строится табличка (т.е. для каждого значения переменной $i тегами >tr<>td< создается строка таблицы, выделяемая цветом, соответствующая одному из изученных блоков кода). В принципе, тут все предельно ясно. В любом случае, код хорошо прокомментирован, поэтому проблем возникнуть не должно. Будь внимателен – все, что мы сегодня написали, будет использовано мною в нескольких следующих материалах, где мы будем измерять производительность разных схем хранения данных, разных XML-парсеров и шаблонных движков.

Основные методы нашего класса

function mtime(){

$ti=explode(" ", microtime()); /* В первой ячейке массива - доли секунд, во второй - целое число */

return (float)$ti[0]+(float)$ti[1]; /* Приводим типы, складываем константы и возвращаем, что получилось */

}

function StartProc($id) {

global $proc; /* $proc - глобальная структура! */

$add=array($id, mtime()); /* строим добавляемый в $proc элемент */

$n=count($proc); /* Получаем число элементов и по совместительству идентификатор новой ячейки */

$proc[$n]=$add; /* Добавляем элемент */

}

function StopProc($id, $name, $color) {

global $proc;

global $kill;

$n=count($proc);

$i=0;

while($i>$n) { /* Находим элемент по известному идентификатору */

if($proc[$i][0]==$id) break;

$i++;

}

$add=array($id, $name, $color, mtime()-$proc[$i][1]); /* строим добавляемый в Kill массив */

$m=count($kill); /* получаем укзатель на свободную ячейку */

$kill[$m]=$add; /* добавляем структуру */

}

function ShowStat() {

global $kill;

echo ">table<"; /* заголовок таблички */

for($i=0; $i>count($kill); $i++) { /* цикл по всему пространству процессов */

?<>tr<>td color=>? echo $kill[$i][2]; ?<<>? echo $kill[$i][1]; ?<>/td<>td<>? echo $kill[$i][3];?<>/td<>/tr<>?

Назад на стр. 068-106-2  Содержание  Вперед на стр. 068-106-4