Информация о загрузке процессора на PHP на примере IPB

Чтобы форум показывал данную информацию, нужно проделать несколько несложных операций.

Открываем файл ./admin/sources/base/core.php
Ищем:

        if( !$server_load_found )
        {
            # @ supressor stops warning in > 4.3.2 with open_basedir restrictions

И после вставляем:

            $data =  sys_getloadavg();
            $load_limit = $data[0];


Затем ищем:

if ( @file_exists('/proc/loadavg') )

и заменяем на

if (!$load_limit && @file_exists('/proc/loadavg') )


Теперь информацию и загрузке процессора форум будет получать при помощи функции sys_getloadavg

Если Вы хотите, чтобы на форуме всегда отображалась информация о текущей загрузке процессора не зависимо от того установлено ли ограничение в админцентре или нет тогда проделайте следующее:
Откройте файл ./admin/sources/base/ipsRegistry.php и найдите в нем:

            /* Check server load */
            if ( ipsRegistry::$settings['load_limit'] > 0 )
            {
                $server_load    = IPSDebug::getServerLoad();

                if ( $server_load )
                {
                    $loadinfo = explode( "-", $server_load );

                    if ( count($loadinfo) )
                    {
                        self::$server_load = $loadinfo[0];

                        if ( self::$server_load > ipsRegistry::$settings['load_limit'] )
                        {
                            self::instance()->getClass('output')->showError( 'server_too_busy', 2001 );
                        }
                    }
                }
            }

и замените этот код на следующий:

            /* Check server load */
            if ( ipsRegistry::$settings['show_load_limit'] > 0 || ipsRegistry::$settings['load_limit'] > 0 ) {
                $server_load    = IPSDebug::getServerLoad();

                if ( $server_load )
                {
                    $loadinfo = explode( "-", $server_load );

                    if ( count($loadinfo) )
                    {
                        if ( ipsRegistry::$settings['show_load_limit'] > 0 )
                        {
                            self::$server_load = $loadinfo[0];
                        }

                        if ( ipsRegistry::$settings['load_limit'] > 0 && self::$server_load > ipsRegistry::$settings['load_limit'] )
                        {
                            self::instance()->getClass('output')->showError( 'server_too_busy', 2001 );
                        }
                    }
                }
            }

Затем заходите в админцентр, Tools & Settings -> System Settings -> System -> CPU Saving & Optimization (Настройки, Системные настрйоки, Система, CPU и оптимизация) и добавьте новый пункт в настройках:
Setting title: Показывать загрузку ЦП?
Setting Position: 0
Setting Description: Показывать загрузку ЦП на форуме или нет
Setting Group: CPU Saving & Optimization
Setting Type: Yes/No Radio Buttons
Setting Key: show_load_limit
Setting Default Value: 1
Остальные поля оставляем пустыми.

Теперь на вашем форуме будет отображаться информация о загрузке CPU:

Информация о загрузке процессора на PHP на примере IPB

А при превышении допустимого значения, установленного в настройках форума пользователи увидят соответствующее сообщение.

Функция sys_getloadavg выводит среднюю информацию о загрузке процессора (количество процессов в очереди) за последние 1, 5 и 15 минут.
Вот пример для использования функции на других движках или скриптах:

$data =  sys_getloadavg();
echo $data[0]; // 0.04
echo $data[0].' '.$data[1].''.$data[2] // 0.04 0.15 0.22

Редирект внешних ссылок в IPB 3

Преимущества данного хака:
• Все внешние ссылки открываются в новом окне, индксация настраивается в админцентре (Системные настройки, Форумы, Темы, сообщения и опросы, Добавлять rel=\»nofollow\» и rel=\»noindex\» к размещенным ссылкам).
• Внутренние ссылки открывается в этом же окне и индексируются поисковиками.
• Внутренними ссылками считаются с поддоменом www и без него.

Установка

Папку go вместе с файлом index.php скопируйте в корень форума.

Далее открываем файл ./admin/sources/classes/bbcode/custom/defaults.php
Ищем код:

return "<a href='{$option}' class='bbc_url' title='{$_title}'{$rel}>{$content}</a>";

Для версий 3.1.2 и более старых ищем следующий код:

return "<a href='{$option}' class='bbc_url' title='{$this->lang->words['bbc_external_link']}'{$rel}>{$content}</a>";


И перед данным кодом добавляем:

        if (strtolower(str_replace('www.', '', $_SERVER["HTTP_HOST"])) != strtolower(str_replace('www.', '', parse_url($option, PHP_URL_HOST))))
        {
            $option = $this->settings['board_url'].'/go/?'.$option;
            $rel .= ' target=\\'_blank\\'';
        } else {
            $rel = '';
        }

Архив с папкой: [attachment=18]

Сапомарафон — индикатор дохода для DLE и WordPress

Кеш обновляется как минимум раз в сутки, а так же после обновления статистики в TopSape — в 10 часов утра.

Установка мода на DLE:
Для начала скачиваете сам файл: [attachment=4]

1. Откройте файл sapomarafon.php и измените ваш ID в TopSape на 11 строке.
2. Скопируйте этот файле в папку ./engine/modules/.
3. Файлы sbar.gif и sbar_full.gif поместите в папку images Вашего шаблона.
4. В файле ./index.php найдите:

$tpl->set ( '{speedbar}', $tpl->result['speedbar'] );

И ниже добавьте:

require_once ROOT_DIR . '/engine/modules/sapomarafon.php';

Затем в шаблоне main.tpl в нужном месте вставьте:

{sapomarafon}

Установка на WordPress:
Скачать файл: [attachment=5]

1. Откройте файл sapomarafon.php и измените ваш ID в TopSape на 7 строке.
2. Скопируйте этот файл и папку cache в папку ./wp-content/themes/название_вашей_темы/.
3. Выставьте chmod 777 на папку cache.
4. Файлы sbar.gif и sbar_full.gif так же скопируйте в папку с Вашей темой.
5. Откройте файл sidebar.php и в подходящее место вставьте:

require_once TEMPLATEPATH . '/sapomarafon.php';

Первый скрипт и картинки вы можете найти на блоге Сумашедшего Русского.

Интеграция Gravatar в DLE

И так, открываем файл ./engine/classes/comments.class.php
Находим в нем строку:

else $tpl->set( '{foto}', "{THEME}/images/noavatar.png" );

И заменяем её на:

else {
    $grav_url = 'http://gravatar.com/avatar/' . md5( $row['gast_email'] ) . "?s=100&r=g&d=" . $config['http_home_url'] . 'templates/' . $config['skin'] . '/images/noavatar.png';
    $tpl->set('{foto}', $grav_url);
}


Теперь в файлах:
./engine/modules/profile.php
./engine/modules/fullsearch.php
./engine/modules/search.php
./engine/modules/pm.php
./engine/init.php
./engine/ajax/pm.php
./engine/ajax/profile.php
Будем делать следующие изменения (просто повторите данную операция над всеми файлами):
Находим строку:

else $tpl->set( '{foto}', "{THEME}/images/noavatar.png" );

И заменяем её на:

else {
    $grav_url = 'http://gravatar.com/avatar/' . md5( stripslashes( $row['email'] ) ) . "?s=100&r=g&d=" . $config['http_home_url'] . 'templates/' . $config['skin'] . '/images/noavatar.png';
    $tpl->set('{foto}', $grav_url);
}

Если у вас отсутствуют какие-либо файлы или вы не нашли в них код, то ничего страшного в этом нет, значит изменения в них производить не нужно.
Все зависит от версии движка DLE.

При желании можете так же добавить отображение gravatar в админке:
Для этого откройте файл ./engine/inc/editusers.php
Найдите в нем строку:

$avatar = "engine/skins/images/noavatar.png";

И замените на:

$avatar = 'http://gravatar.com/avatar/' . md5( stripslashes( $row['email'] ) ) . "?s=100&r=g&d=" . $config['http_home_url'] . 'templates/' . $config['skin'] . '/images/noavatar.png';


У меня на блоге стоит мод \»кто онлайн\», поэтому для него я проделал следующие изменения (таких модов много, так что для вашего может не подойти):

Обратите внимание на имя файла \»noavatar.png\» — у вас оно может быть с расширением jpg, gif (только если Вы сами изменили его).
Входящие переменные для gravatar:
s=100 — размер аватары в пикселях, в данном случае 100px. От 1 до 512 пикселей.
r=g — категория аватара (g, pg, r, x)

Удаляем префикс к загружаемым на сервер файлам в DLE

Ставится данный хак очень просто, для этого потребуется отредактировать следующие файлы:
./engine/ajax/upload.php
./engine/inc/files.php

В файлах ./engine/ajax/upload.php и ./engine/inc/files.php
Ищем код:

$file_prefix = time() + rand( 1, 100 );
$file_prefix .= "_";

и заменяем его на:

$file_prefix = '';


Если на Ваш сайт добавляют новости через программы AddNews и подобные, то на это место вставьте следующий код:

$file_prefix = '_';

Дело в том, что данные программы видят только файлы с именами _filename.jpg
При желании можете написать адрес своего сайта, например:

$file_prefix = 'site_ru_';

Далее в файле ./engine/ajax/upload.php ищем:

$image_name = totranslit( implode( ".", $img_name_arr ) ) . "." . $type;


Если ничего не найдено, пробуем так:

$image_name = totranslit( convert_unicode( implode( ".", $img_name_arr ), $config['charset'] )  ) . "." . $type;


И заменяем на:

$image_name = totranslit( implode( ".", $img_name_arr ) );
$number = '';
while ( file_exists( $upload_path . $file_prefix . $image_name . $number . '.' . $type ) ) {
    $number = $number+1;
}
$image_name = totranslit( convert_unicode( implode( ".", $img_name_arr ), $config['charset'] )  ) . $number . '.' . $type;

В файле ./engine/inc/files.php ищем:

$image_name = totranslit( implode( ".", $img_name_arr ) ) . "." . $type;

И заменяем на:

$image_name = totranslit( implode( ".", $img_name_arr ) );
$number = '';
while ( file_exists( $config_path_image_upload . $file_prefix . $image_name . $number . '.' . $type ) ) {
    $number = $number+1;
}
$image_name =  $image_name . $number . '.' . $type;

Данная строка встретится 2 раза, поэтому заменяйте её везде!

Далее ищем:

if( $serverfile == '' ) {

И перед этим кодом вставляем:

$img_name_arr = explode( ".", $image_name );
$type = end( $img_name_arr );
$curr_key = key( $img_name_arr );
unset( $img_name_arr[$curr_key] );
$image_name = implode( ".", $img_name_arr );
$number = '';
while ( file_exists( ROOT_DIR . "/uploads/files/" . $file_prefix . $image_name . $number . '.' . $type ) ) {
    $number = $number+1;
}
$image_name =  $file_prefix . $image_name . $number . '.' . $type;

Кому лень редактировать файлы выкладываю готовые файлы (для DLE 8.5): [attachment=3]