При тестировании биллинга бывает нужно списать определенный размер трафика. Из зарубежных ресурсов может быть полезным
http://www.thinkbroadband.com/download.html, из российских -
http://upyachka.ru/ (осторожно, трафик!). Но в первом случае появляется зависимость от полосы пропускания внешней линии, а во втором - нельзя указать размер страницы.
И здесь нам на помощь придет PHP.
Пример использования скрипта:
http://hostname/configured_size.php?min=2000&max=4000 - размер страницы в заданном диапазоне.
В случае если вам нужен точный размер, укажите одинаковое значение min и max
Исходник:
<?php
header("Content-type: text/html\n\n");
if (isset($_GET["min"])) {
$min=$_GET["min"];
}
else {
$min=1000;
}
if (isset($_GET["max"])) {
$max=$_GET["max"];
}
else {
$max=1000;
}
$size = rand($min, $max);
//echo "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">"
echo "<html>";
echo "<head>";
echo '<title>Sample page with size ';
echo "$size bytes";
echo '</title>';
echo '</head>';
echo '<body>';
$iterations = ($size - 82 - strlen($size)); // 82 is for the characters between <html>...</html> including these tags
for ($i=0; $i < $iterations; $i++) {
echo "1";
};
echo '</body>';
echo '</html>';
?> |
<?php
header("Content-type: text/html\n\n");
if (isset($_GET["min"])) {
$min=$_GET["min"];
}
else {
$min=1000;
}
if (isset($_GET["max"])) {
$max=$_GET["max"];
}
else {
$max=1000;
}
$size = rand($min, $max);
//echo "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">"
echo "<html>";
echo "<head>";
echo '<title>Sample page with size ';
echo "$size bytes";
echo '</title>';
echo '</head>';
echo '<body>';
$iterations = ($size - 82 - strlen($size)); // 82 is for the characters between <html>...</html> including these tags
for ($i=0; $i < $iterations; $i++) {
echo "1";
};
echo '</body>';
echo '</html>';
?>
Есть еще один способ. Можно просто создать командой группу файлов с шагом 1 Мбайт и запрашивать их по имени (которое будет однозначно определять размер):
# for (( x=1; x<501; x++ )); do fallocate -l ${x}M ${x}MB.file.txt; done |
# for (( x=1; x<501; x++ )); do fallocate -l ${x}M ${x}MB.file.txt; done
[sc:social_networks ]