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: