FAQ

Stepan Ilyin aka Step

Xakep, номер #056, стр. 056-088-5


Blocks resent 73

Retrains Requested 9 Retrains Granted 0

Line Reversals 0 Blers 301

Link Timeouts 30 Link Naks 16

Speed 48000/26400

SNR (dB) 33.4

Speed Shifts Up/Down/Null 1/17/3

Вырезанная статистика АЧХ

А: Судя по статистике, АЧХ канала практически идеальна. Зато соотношение сигнал/шум весьма и весьма низкое SNR=33.4. Это считается довольно шумным каналом, и, на мой взгляд, первичная скорость (48000) – слишком велика. Следствием столь высокого уровня шума является ситуация, когда модем посылает пакет, но не получает на него ответа (Link TimeOuts = 30 - таймауты, Blers = 301 - блоковые ошибки). А отсюда и запросы ретрейнов (Retrains Requested = 9). Более того, скорость на протяжении сессии снизилась 17 раз, об этом говорит параметр Speed Shifts Up/Down/Null 1/17/3. Ограничь скорость модема, скажем, до 33600 (AT&U10&N16 – подробнее читай в мануале к модему) и начинай искать проблему в линии. Попробуй убрать все ненужные телефонные провода и параллельные телефоны. Отдельный провод от щитка на лестничной площадке к твоему модему без перегибов и розеток будет гарантией того, что проблемы в линии «находятся» за пределами квартиры. Проверь крепление телефонного провода в щите – соседи нечаянно могут задеть его и нарушить контакт. Если все это не помогло, звони на АТС и постарайся узнать: не стоят ли на твоей линии уплотнители (частенько бывают на старых телефонных станциях), блокираторы и прочая фигня, способная серьезно испоганить связь. Если последние опасения подтвердятся, то единственным выходом будет замена АТС.

Q: В последнее время практически на любом сайте с динамическим движком есть строчка «эта страница была сгенерированна за 0.234 секунды». Мне очень интересно, как можно сделать подобное на своем сайте. Движок сайта написал на PHP.

А: Это очень легко реализуемо с помощью классической процедуры измерения времени:

<? class Timer {

var $start; // начать отсчет времени

var $stop; // закончить измерение

function start() {

$t = gettimeofday();

$this->start = $t[sec] * 1000000.0 + $t[usec];

}

function stop() {

$t = gettimeofday();

$this->stop = $t[sec] * 1000000.0 + $t[usec];

}

function elapsed() {

return ($this->stop - $this->start) / 1000000.0;

}

}; ?>

Для начала подсчета времени в нужном месте скрипта вставь следующее:

<? $t = new Timer();

$t->start(); ?>

Чтобы окончить измерение используй сточку «<? $t->stop(); ?>» (без кавычек), а для вывода результатов в нужном месте страницы размести код вызова функции отображения результатов «<? print $t->elapsed(); ?>».

Q: Как на PHP сделать, чтобы в зависимости от параметров, переданных скрипту, показывался разный текст (script.php?page=1 (2, 3, 4, 5, и т.д.)?

A: switch ($_GET['page']) {

case 1:

echo 'Первая страница';

break;

case 2:

echo 'Вторая страница';

break;

case 3:

echo 'Третья страница';

break;

default:

Назад на стр. 056-088-4  Содержание  Вперед на стр. 056-088-6