Файл 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: написать скрипт, получающий через форму номер паспорта пользователя, проверяющий его корректность (две латинские заглавные буквы, семь цифр) и добавляющий его в таблицу БД в случае, если такого номера там ещё нет.