Это сайт — моя персональная записная книжка. Интересна мне, по большей части, история, своя жизнь и немного программирование.

PHP: мануалы читать необходимо

Я изучаю новый язык следующим образом: сначала всегда полностью читаю руководство (вот с «Пайтоном» мне не повезло — в руководстве, которое я выбрал, об itertools было упомянуто вскользь), потом уже пробую что-то писать, изредка показывая куски кода для критики.

Конечно, руководство полностью наизусть я не помню, но зато всегда помню, что «что-то где-то было», это частно избавляет от изобретения велосипедов.

В свежей статье на «Хабре» — один из подобных велосипедов:

function uptime() {
    $fp=@popen('uptime','r');
    $s=@fgets($fp);
    @fclose($fp);

    @preg_match('#load average: ([0-9\.]+)#', $s, $m);
    return $m[1];
};

Во-первых, в PHP есть функция sys_getloadavg, во-вторых, (если версия PHP ниже 5.1.3) эту информацию можно добыть значительно проще: «(float) substr(strstr(`uptime`, „load average:“), 13)», в третих, можно (на Линуксах) читать /proc/loadavg.

В этой статье вообще масса забавного: в разделе «временные припарки», где index.php заменили для снятия нагрузки, для чего-то использовался print, вместо того, чтобы выдать сообщение голым html, memcached используется как база данных и так далее.

8 комментариев
david-m.livejournal.com 2008

Статья та вообще феерична… впрочем, я зашёл на сабжевый сайт — он и интерфейсно столь же кошмарен.

Евгений Степанищев (bolknote.ru) 2008

Комментарий для david-m.livejournal.com:

Ожидаемо

kuroi-kaze-85.livejournal.com 2008

Комментарий для Евгения Степанищева:

Про sys_getloadavg не знал, спасибо.

Евгений Степанищев (bolknote.ru) 2008

Комментарий для kuroi-kaze-85.livejournal.com:

Стоит читать весь мануал всё-таки. Ещё, например, очень редко обращают внимание на раздел posix.

larionovmou.ya.ru 2008

Насчет посикса все неоднозначно. На двух разных солярисах (из моей практики), информация получение информации о памяти, либо давало неверный результат либо загоняло весь апач (mod_php) в корку.

Евгений Степанищев (bolknote.ru) 2008

Комментарий для larionovmou.ya.ru:

С «Сорярисом» не сталкивался, никак не могу прокомментировать.

Owner (companyowner.myopenid.com) 2008

Да ладно, по-моему хорошая статья — ведь главное не методы, а результат, ну написал он мелкую функцию для определения uptime’а. Но ведь в статье не это главное, а как он на живой системе быстренько оживлял сервак. :) На сколько я помню, ты же сам такое практиковал. А когда видишь, что сервер трещит по швам, то главное быстро чего-то предпринять и тут уже не до красоты. На счёт memcached не понял в чём проблема — он и говорит что использовал его как временное хранилище и переодически его перечитывал. Вполне обычное использование.

Евгений Степанищев (bolknote.ru) 2008

Комментарий для companyowner.myopenid.com:

Есть более логичные шаги. То, что там описано достойно фиксов на скорую руку.