Решение

Файл lab4.php

<?php

// Чтение текста из файла.

if (is_file('text.txt'))

{

$text = file_get_contents('text.txt');

}

else

{

die('Файл данных text.txt не найден.');

}

// Callback-функция возведения в квадрат

// найденных целых чисел.

function square($x)

{

return '<span style="color:red">'.($x[0]*$x[0]).'</span>';

}

// Поиск и замена целых чисел.

$text = preg_replace_callback('/\d+/', 'square', $text);

// Вывод результата

echo $text;

?>


Пример выполнения работы №5

Вариант N: написать скрипт, выполняющий указанное количество раз случайный запрос (из некоторого набора) и определяющий минимальное, максимальное и среднее время выполнения запроса.

Решение

Файл lab5.php

<?php

// Количество повторений запроса

$iterations = 100;

// Массив с запросами

$queries = array (

"show databases",

"show tables from `mysql`",

"select * from `mysql`.`mysql_user`",

"select * from `mysql`.`help_relation`",

"select * from `mysql`.`help_topic`");

// Подсоединение к СУБД

$lnk = mysql_connect('127.0.0.1', 'root', '123456');

if ($lnk === FALSE) { die(); }

// инициализация массива оставшихся итераций для каждого запроса

for ($i=0;$i<sizeof($queries);$i++)

{

$final_data[$i]['iterations'] = $iterations;

}

// Продолжать выполнение следует в случае, если хотя бы

// для одного запроса не был исчерпан лимит итераций

function can_continue($final_data)

{

$sum = 0;

for ($i=0;$i<sizeof($final_data);$i++)

{

$sum+=$final_data[$i]['iterations'];

}

if ($sum>0)

{

return TRUE;

}

else

{

return FALSE;

}

}

// Выполнять следует случайный запрос, однако при

// этом у него не должен быть исчерпан лимит итераций

function get_query_number($final_data)

{

$x = mt_rand(0, sizeof($final_data)-1);

if ($final_data[$x]['iterations']>0)

{

return $x;

}

else

{

for ($i=0; $i<sizeof($final_data); $i++)

{

if ($final_data[$i]['iterations']>0)

{

return $i;

}

}

}

}

// Функция подсчёта среднего времени выполнения запроса

function avg($arr)

{

if (sizeof($arr)==0)

{

return 0;

}

$sum = 0;

for ($i=0; $i<sizeof($arr); $i++)

{

$sum+=$arr[$i];

}

return $sum/sizeof($arr);

}

// Основной цикл: выполнение запросов и сбор значений времени

while (can_continue($final_data))

{

$x = get_query_number($final_data);

$t1 = microtime(TRUE);

mysql_query($queries[$x]);

$t2 = microtime(TRUE);

$final_data[$x]['avg'][] = $t2-$t1;

$final_data[$x]['iterations']--;

}

// Генерация и вывод результатов

for ($i=0;$i<sizeof($queries);$i++)

{

echo 'Query ('.($i+1).') ['.$queries[$i].']:'."\n";

echo 'Min: '.min($final_data[$i]['avg'])."\n";

echo 'Max: '.max($final_data[$i]['avg'])."\n";

echo 'Avg: '.avg($final_data[$i]['avg'])."\n\n";

}

// Закрытие соединения с СУБД

mysql_close($lnk);

?>


Пример выполнения работы №6

Вариант N: написать скрипт, получающий через форму номер паспорта пользователя, проверяющий его корректность (две латинские заглавные буквы, семь цифр) и добавляющий его в таблицу БД в случае, если такого номера там ещё нет.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: