MyDC.ru _ Ваши проекты _ Public PHP hublist (Хаблист) by Enyby
Автор: Enyby 29.8.2011, 10:45
Public PHP hublist by Enyby
Версия: 0.03 Платформа: Any Автор: Enyby
Описание: Данный хаблист свободно распостраняем и изменяем в любых разумных пределах. Наличие ссылки на разработчика не обязательно, поддержки и дальнейшего развития хаблиста от разработчика не будет. Админки нет, все изменения через базу данных. Есть экспорт в bat, xml и поддержка прямого импорта в DC клиенты. Есть простой сервер для авторегистрации хабов. Пингует как пингер и как клиент. Корректная работа со всеми хабами не гарантируется.
Процедура установки: 1. Распаковать архив в папку веб сервера. 2. Указать в config.php парметры для подключения к БД. 3. Импортировать в БД скрипт db.sql. 4. Поставить на крон запуск refresh.php.
По желанию можно поставить на крон dchub.php для импорта списка хабов на свой хаб. Этот скрипт будет обновлять hubs.lua, который можно подключать в скрипты хаба. Также, можно настроить запуск server.php, тогда в хаблисте будет доступна авторегистрация хабов. Выглядит это так - в настройках хаба, указывается адрес вашего хаблиста и хаб сам сообщает хаблисту свое состояние через равные интервалы времени.
Если вас интересует встраивание хаблиста в ваш сайт, вам потребуется изменить код header.php, отключив вывод общего оформления страницы или же использовать iframe, встраивая страницу без изменений.
Предполагаемые проблемы и ограничения: 1. Если хаб не соответствует протоколу NMDC возможны проблемы с его пингованием. 2. Большинство нераспостраненных хабов (включая RusHub) могут иметь неправильное определение серверного софта. 3. Для работы с большим числом хабов, потребуется переписывать модуль пингования на работу с пулом подключений, так как, в данный момент, модуль открывает соединения ко всем хабам одновременно, что может повлечь проблемы, при достаточном большом числе хабов. 4. Часть функционала, навроде хинтов по наведению, доступно в коде, но не доступно на сайте, так как не подключены скрипты для вывода этих хинтов. 5. Возможны проблемы при работе с хабами на кириллических доменах. 6. Скрипт не тестировался на линуксе - возможно будут какие-то проблемы.
Посмотреть в реале, что из себя представляет хаблист можно по адресам: http://mydc.ru/r/?http://inethub.olvi.net.ua/dc/ - может иметь функционал отсутствующей в данном релизе http://mydc.ru/r/?http://32net.org/hublist/ - этот хаблист со своими дополнениями и улучшениями http://mydc.ru/r/?http://triolan-hoodo.sytes.net/hubs/ - этот хаблист без улучшений и каких было редактирований. http://mydc.ru/r/?http://hublist.godc.ru/ - этот хаблист со своими дополнениями и улучшениями http://mydc.ru/r/?http://arena.triolan.com.ua/hublisti.html - этот хаблист со своими дополнениями и улучшениями
Автор: Enyby 29.8.2011, 22:54
Дополнения: 1. Есть проблемы с автодетекцией кодировки хаба. Если у вас не будет хабов с кодировкой utf-8, то вы можете заменить 5 строку файла refresh.php следующими двумя (только для версии 0.01):
function detect_encoding($string) { return 'Windows-1251';
2. Хаблист работает постоянно в режиме клиента и только в начале каждого часа, в течение первых 5 минут, он работает как пингер.
3. Хаблист заточен под пингование 1 раз в 5 минут. Если вы используете другой интервал, то графики на странице хаба, могут иметь удручающий вид. Можете попробовать их заменить на флеш-компоненты, это должно обеспечить лучший вид.
Автор: Ksan 29.8.2011, 23:40
Цитата
3. Хаблист заточен под пингование 1 раз в 5 минут.
Не удивлюсь, если такой пингер быстро забанят. И нахожу, что пункт 3 противоречит пункту 2:
Цитата
2. Хаблист работает постоянно в режиме клиента и только в начале каждого часа, в течение первых 5 минут, он работает как пингер.
Либо опишите человеческим языком, чтоб не было непоняток.
Автор: VOVKT 30.8.2011, 7:44
а зачем под 7 статических значений заводить целую таблицу(hl_status)? чтоб запросы были посложнее?
Автор: Enyby 30.8.2011, 8:28
Цитата(Ksan @ 29.8.2011, 23:40)
Не удивлюсь, если такой пингер быстро забанят. И нахожу, что пункт 3 противоречит пункту 2: Либо опишите человеческим языком, чтоб не было непоняток.
Не забанят. Один раз в час он работает как пингер, т. е. отсылает BotINFO и получает HubINFO. Все остальное время он входит как обычный клиент DC сети на хаб, получает список пользователей и имя хаба. На основании списка пользователей он определяет текущий онлайн и общую шару.
Цитата(VOVKT @ 30.8.2011, 7:44)
а зачем под 7 статических значений заводить целую таблицу(hl_status)? чтоб запросы были посложнее?
На начальном этапе этих значений было 3. В процессе эволюции хаблиста их стало семь. Так что это совсем не константы. К примеру, можно добвить статус "Хаб не соответствует протоколу NMDC" или "Устаревшее серверное ПО". Это первый аспект. Второй аспект связан с тем, что на эту таблицу стоит внешний ключ из другой таблицы, что обеспечивает целостность и непротиворечивость данных в БД.
Автор: VOVKT 30.8.2011, 8:42
А это видимо не константы?
Цитата(Enyby @ 30.8.2011, 9:28)
"Хаб не соответствует протоколу NMDC" или "Устаревшее серверное ПО"
такая структура подходит для MS Access. вот еслиб их было 1000 понять еще можно было понять а так это просто массив из 7ми элементов в какомнить файле err.lng
Автор: Enyby 30.8.2011, 8:45
Лично мне проще править БД, а не править файл констант + БД. Как по мне, так без разницы. МНе было удобнее сделать в БД.
Но, с другой стороны, если писать админку, то в моем случае статусы можно будет редактировать или переводить на другие языки рядовым пользователям, а в вашем случае только вебмастеру сайта.
Автор: VOVKT 30.8.2011, 8:52
Цитата(Enyby @ 30.8.2011, 9:45)
если писать админку, то в моем случае статусы можно будет редактировать или переводить на другие языки рядовым пользователям, а в вашем случае только вебмастеру сайта.
http://mydc.ru/r/?http://php.net/manual/ru/ fopen...fwrite...fclose сейчас несколько десятков добровольцев переводят документацию php так что чтобы отредактировать файл большого ума не надо
и кстати специально для простоты перевода кокраз и пишут .lng файлы
Автор: mariner 30.8.2011, 9:08
А еще есть православный gettext, но вы о нем не слышали :3
Цитата
Лично мне проще править БД
Сразу видно человека, который не в курсе про yaml
Автор: Enyby 30.8.2011, 9:22
Я очень за вас рад. Каждый пишет так, как ему удобнее.
А за gettext спасибо. Возьму на заметку. Видел его применение в коде phpBB, но тогда не разбирался что, да почему. Пока, что повезло и не довелось делать мультиязычность.
PS И да, тут столько желающих переписать "правильно" этот хаблист... Вам нужно код на github и совместными усилиями вы приведете его из мрачного Средневековья в светлое Будущее!
Автор: VOVKT 30.8.2011, 9:36
Цитата(Enyby @ 30.8.2011, 10:22)
Каждый пишет так, как ему удобнее.
это лишь минус языка) и кстати cms пишут по правилам)
Автор: Enyby 30.8.2011, 10:37
По поводу редактирования файлов: Админ и вебмастер, обычно, разные люди. И админу спокойнее когда нельзя с сайта править исполняемые файлы. Конечно можно заводить файлы конфигураций или тот же YAML, но их можно читать на сайте, введя url к ним. Можно закрыть доступ к одной директории, но в случае nginx это нужно дергать админа, так как прав у вебмастера обычно нет. Ну и т. д. А с базой все проще.
Еще одна причина - целостность базы. Я могу подключится из С# к базе и организовать вывод. А если использовать сторонние файлы, то потребуется и их подключать, а это уже проблемы с доступом, если файлы находятся на другой машине (БД доступно по сети) и т. д.
Резюме: Каждый выбирает технологии и те или иные типовые решения исходя из своего опыта и/или текущей ситуации.
Простой пример: У меня на одном сервере нет root'а. Поэтому, чтобы управлять cron'ом, он реализован на php и работает через БД. И, если раньше, я бегал за админом, чтобы изменить конфиг cron'а, то теперь я сам себе хозяин.
Кстати. Мне вот тут пришла одна забавная идея. Код есть. Доступ открыт. Вот пусть VOVKT перепишет хаблист на lng файлы, а mariner на YAML. И каждый будет рад и счастлив.
И вообще. Приглашаю всех желающих. Каждый исправляет то, что ему не нравится и получает хаблист своей мечты с блэк-джеком и шлюхами.
А по поводу себя - на тот момент я, конечно же, не знал ничего о YAML и lng. Но если бы я писал сейчас - написал бы точно так же. ;-)
PS Если есть какие-то конкрентые вопросы - обращайтесь. По поводу предложений, улучшений и со стебом - не по адресу.
Автор: VOVKT 30.8.2011, 13:15
я не стебался) и никак не хотел чтоб на это было похоже) просто увидел что у тебя стоит версия 0.01 а это или ты хочешь сам дорабатывать и т.п) или ктото будет дорабатывать) значит можно указывать на неточности и ошибки) типа:
Это от того что писалось не все и сразу, а допиливалось в течение длительного интервала времени.
Автор: ke(x)one 1.9.2011, 22:11
у меня как то он не работает можете кинуть рабочий у кого есть?
Автор: Saymon21 1.9.2011, 22:39
Что значит не работает?
Автор: CrazyKiller 2.9.2011, 0:35
Цитата(ke(x)one @ 1.9.2011, 23:11)
у меня как то он не работает можете кинуть рабочий у кого есть?
Подробнее, что не работает, Логи последние предоставьте, тут нет гадалок, их уволили !
Автор: ke(x)one 2.9.2011, 11:36
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\hublist\index.php on line 75
Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\hublist\index.php on line 107
показывает что хаб добавлен а самого хаба не показывает ни одного
Автор: Enyby 2.9.2011, 11:41
Раскомментируйте 43 строку index.php и полученный текст запроса выполните в базу руками. Там будет ошибка. Напишите ее сюда.
Автор: ke(x)one 2.9.2011, 11:42
эт как? я особо так не мыслю по хаблистам
Автор: Enyby 2.9.2011, 11:45
Это убрать два слеша в начале 43 строке. Зайти снова на страницу хаблиста. В начале появится текст вида: SELECT hub.id, hub.name, hub.description, hub.host, hub.port, state.users, state.share AS share, online, date.value AS date, avg_users*rel AS avg_users, avg_share*rel AS avg_share, status.name AS status, max_users, max_share, hint FROM hl_hub AS hub LEFT JOIN hl_state AS state ON hub.id = state.id_hub AND hub.id_last_date = state.id_date LEFT JOIN hl_date AS date ON hub.id_last_date = date.id INNER JOIN hl_status AS status ON status.id = hub.id_status LEFT JOIN ( SELECT id_hub, COUNT(users)/2016 AS rel FROM hl_state AS state INNER JOIN hl_date AS date ON state.id_date = date.id WHERE date.value BETWEEN NOW() - INTERVAL 1 WEEK AND NOW() GROUP BY state.id_hub ) AS st ON st.id_hub = hub.id WHERE block = 0 ORDER BY
Этот текст нужно скопировать и выполнить как запрос в phpMyAdmin. Там будет текст ошибки, который гнужно сюда скопировать.
Скорее всего вы что-то напутали с базой данных.
Автор: Гарик БатьковиЪ 2.11.2011, 19:14
у меня тупой вопрос, а под windows работает этот hublist? в качестве cron я пробвал MoodleCron-Setup.exe
Автор: CrazyKiller 2.11.2011, 22:29
Цитата(Гарик БатьковиЪ @ 2.11.2011, 20:14)
у меня тупой вопрос, а под windows работает этот hublist? в качестве cron я пробвал MoodleCron-Setup.exe
Планировщик Заданий вас спасет
Автор: Enyby 3.11.2011, 0:01
Цитата(Гарик БатьковиЪ @ 2.11.2011, 19:14)
у меня тупой вопрос, а под windows работает этот hublist?
Работает под любой операционной системой с вебсервером, php и любым планировщиком.
Цитата(Гарик БатьковиЪ @ 2.11.2011, 19:14)
в качестве cron я пробвал MoodleCron-Setup.exe
Как уже было сказано, можно использовать "планировщик задач". Хотя это не принципиально, хоть nnCron.
Сервер http://mydc.ru/r/?http://inethub.olvi.net.ua/dc/ работает на Windows и использует планировщик задач как замену Cron'а.
Автор: Гарик БатьковиЪ 3.11.2011, 1:51
может я что-то сделал не правильно, но у меня добовлять, добовляется в базу MySQL, но статискика хабов не собирается а если через любой браузер я открываю файл refresh.php , идёт постоянно ошибка Notice: Undefined offset: 0 in D:\***\***\hublist\dc.php on line 179
Автор: Артём 3.11.2011, 8:30
Цитата(Гарик БатьковиЪ @ 3.11.2011, 1:51)
может я что-то сделал не правильно...
ты прав, ты сделал лишней центровку текста!
Автор: Enyby 3.11.2011, 10:52
Цитата(Гарик БатьковиЪ @ 3.11.2011, 1:51)
может я что-то сделал не правильно, но у меня добовлять, добовляется в базу MySQL, но статискика хабов не собирается а если через любой браузер я открываю файл refresh.php , идёт постоянно ошибка Notice: Undefined offset: 0 in D:\***\***\hublist\dc.php on line 179
Содержимое таблицы с хабами в студию. У вас какие-то проблемы с функцией чтения сокетов хабов. Советую так же проверить наличие в php расширения для работы с сокетами.
Еще можете написать в 177 строчке файла dc.php вместо:
Код
function read(&$sockets, &$read, &$hubs, $debug = false) {
теперь при открытии refresh.php в браузере, хрень какая-то, ну вот сами взглянте http://mydc.ru/r/?http://32net.org/hublist/refresh.php
Автор: Enyby 3.11.2011, 20:38
Цитата(Гарик БатьковиЪ @ 3.11.2011, 12:57)
теперь при открытии refresh.php в браузере, хрень какая-то, ну вот сами взглянте http://mydc.ru/r/?http://32net.org/hublist/refresh.php
Это не хрень. Это называется отладка. Можешь убирать изменения, я понял в чем проблема.
У тебя почему-то работа с ассоциативным массивом сокетов дает на выходе обычные перечисляемые массивы. Видно в этом PHP реализация такая. Можешь переставить на 5.3 или же в файле dc.php добавить одну строку в трех местах, отмеченных звездочкой
Код
<...>
function write(&$sockets, &$write, &$hubs, $debug = false){ foreach($write as $key => $socket) { * $hub = $hubs[$key];
<...>
function read(&$sockets, &$read, &$hubs, $debug = false) { foreach($read as $key => $socket) { * $hub = $hubs[$key];
<...>
function error(&$sockets, &$error, &$hubs, $debug = false) { foreach($error as $key => $socket) { * $hub = $hubs[$key];
<...>
строка вот эта:
Код
$key = array_search($socket, $sockets);
Должно решить все проблемы.
Какие люди "благодарные" пошли... Ну да ладно, это их проблемы.
С сервачком что-то там. То ли на графиках заткнулся, либо совпадение произошло, как я туда полез и графики посмотрел.
А так, товарищи мои сетевые, у кого баг подобный выше описанному, юзаем данный патчик (см. выше). Он таки рабочий, хотя изначально существовал в голове. Со временем я начальный файлик в теме обновлю, чтобы на эти грабли поменьше наступали.
PS Нет. Таки дело в картинках. Стоит туда зайти, как сервер ложится.
Автор: Гарик БатьковиЪ 3.11.2011, 21:17
Enyby, спасибо большое! заработало!
Автор: Гарик БатьковиЪ 15.11.2011, 20:46
привет, Enyby у меня возникла новая проблема, при открытии статистики хаба вырубается апаче...
Автор: Enyby 15.11.2011, 20:49
Хе-хе. Она не возникла. Она и была. Я про нее писал уже:
Цитата
С сервачком что-то там. То ли на графиках заткнулся, либо совпадение произошло, как я туда полез и графики посмотрел.
Цитата
PS Нет. Таки дело в картинках. Стоит туда зайти, как сервер ложится.
Смотри логи, что там нарисовано. Также поробуй Apache взять поновее или собери его не VC6, а VC9.
Автор: Гарик БатьковиЪ 15.11.2011, 21:44
Enyby, я заметил, что происходит только тогда, когда идёт более одного запроса
Автор: Enyby 15.11.2011, 21:46
Это как-то связано с генерацией картинкок. Может расширение GD не подключено? В любом случае, совет про обновление Апача по прежнему в силе.
Автор: Гарик БатьковиЪ 15.11.2011, 21:49
Enyby, ты сейчас про php_gd2.dll ?
Автор: Enyby 15.11.2011, 21:51
Именно. Я вообще у тебя ни одного графика не видел. Только я пытался их открыть, сразу сервер становился ежиком и уходил в туман.
Автор: Гарик БатьковиЪ 15.11.2011, 21:53
Enyby, было разшаренно.. а какие ещё библиотеки использует этот скрипт?
Автор: Enyby 15.11.2011, 21:59
Больше ничего не должен. Займись отладкой. После каждой строчки поочередно, начиная с последней, добавляй в конце:
Код
die('i am here');
Если сервер глохнет, то переставляй вставку на строчку выше и пробуй снова. Когда увидишь ответ "i am here", то ошибка будет в следующей строке скрипта.
Автор: Гарик БатьковиЪ 16.11.2011, 21:13
Enyby, привет. у меня стоял apache_2.0.59-win32-x86-no_ssl.msi я его заменил на apache_2.2.14-win32-x86-no_ssl.msi но по прежнему не работает.. http://mydc.ru/r/?http://32net.org/hublist/
Автор: Enyby 16.11.2011, 21:26
Делай это:
Цитата(Enyby @ 15.11.2011, 21:59)
Займись отладкой. После каждой строчки поочередно, начиная с последней, добавляй в конце:
Код
die('i am here');
Если сервер глохнет, то переставляй вставку на строчку выше и пробуй снова. Когда увидишь ответ "i am here", то ошибка будет в следующей строке скрипта.
Я понимаю долго и не хочется, но я других путей не вижу.
Автор: Гарик БатьковиЪ 16.11.2011, 21:38
Enyby, прости за тупизм, а какой файл, hub.php, да? ))
Автор: Enyby 16.11.2011, 21:43
Вставку делать в файле day.php. Смотреть результат по адресу http://mydc.ru/r/?http://32net.org/hublist/day.php?type=users&time=week&id=2
Кажется я нашел причину. Проблема в редакторе. которым ты правишь сайт. В частности его работой с юникодом. Когда ты вносил данные про БД, ты сохранил файл с BOM меткой, это три байта в начале файла. Вот сейчас я вижу три метки в коде главной страницы. Но если с html или текстом это работает, то с картинками это не работает. Тебе нужно через нормальный редактор сохранить файлы без BOM метки. Я использую AkelPad. Можешь использовать его или какой-то другой, если он тебе известен.
Автор: Гарик БатьковиЪ 17.11.2011, 0:19
Enyby, перекодировал все файлы в UTF-8 (без BOM) но я всегда пользуюсь Notepad++. графики заработали, НО как и при первом запуске этого скрипта, вместо русских букв, еироглифы... он (браузер) пытается загрузить в ANSI
числа, это цвет. RGB в десятичном представлении. Хотя на деле, ты можешь, чтобы не мучится с перекодировкой, писать в шестнадцетирчном представлении. Это будет как-то так:
Код
$color = new stdClass(); $color->grid = imagecolorallocate($canvas, 0x00, 0x00, 0x00); // оси графика $color->background = imagecolorallocate($canvas, 0xFF, 0xFF, 0xFF); // фон графика $color->down = imagecolorallocate($canvas, 0xFF, 0x00, 0x00); // цвет падения значения $color->up = imagecolorallocate($canvas, 0x00, 0xFF, 0x00); // цвет подъема значения $color->base = imagecolorallocate($canvas, 0x7F, 0x7F, 0x00); // цвет базы значения
PS Чуть ниже находится переменная $font, отвечающая за размер шрифта. Можно и сней поиграться по вкусу.
Автор: Гарик БатьковиЪ 19.11.2011, 0:06
Enyby спасибо большое за помощь, добрый человек!
а ещё чуть не поможешь, если не трудно, вот в файле header.php ты сделал меню , которое постоянно с верху, а дополнительную строчку с низу как сделать?
Автор: Enyby 19.11.2011, 2:26
header.php:
Код
function shutdown() { // функция, срабатывающая при завершении работы скрипта $content = ob_get_contents(); // получаем весь предыдущий вывод в переменную содержимого ob_end_clean(); // очищаем весь вывод $title = isset($GLOBALS['title']) ? $GLOBALS['title'].' - '.HUBLIST_TITLE : HUBLIST_TITLE; // устанавливаем титул страницы echo ' <html> <head> <title>'.$title.'</title> <link rel="stylesheet" href="./default.css" type="text/css" /> </head> <body> <div id="menu"> <ul> <li><a href="./">Хабы</a></li> <li><a href="./addhub.php">Добавить хаб</a></li> <li><a href="./Favorites.php">Favorites.xml</a></li> <li><a href="./bat.php">Hubs.bat</a></li> <li><a href="./about.php">О хаблисте</a></li> </ul> </div> <div id="main-box"> <div id="left-column"> Это левая колонка </div> <div id="right-column"> Это правая колонка </div> <div id="content"> '.$content.' </div> </div> <div id="footer"> Это подвал сайта. Тут может быть что угодно. </div> </body> </html>'; // пошел полный вывод страницы, тут может быть все что угодно и как угодно (шапка, подвал, боковые колонки или еще что) }
Чтобы колонки были колонками, можно добавить такие стили:
Спасибо за хаблист. Фактически это первый заслуживающий внимания хаблист, из выложенных на сайте. Наверное, имеет смысл обратить внимание пользователей, что хаблист без критических ошибок работает только на PHP 5.3.X, т.к. на предыдущих версиях возникает описанная в топике ошибка с сокетами, приводящая к зависанию. Столкнулся с еще одной особенностью работы этого хаблиста. Раз в час он обменивается с хабами командой $BotINFO, что вызывает именно на VerliHub (версия 0.9.8e-r2) сообщение в опчат:
Код
The following BOT has just entered the hub :DCPinger/2.0.3; Visit http://inethub.olvi.net.ua for more information. -- IP=' x.x.x.x ' Host=' ' User=' hublist '
На птоке все ок. Не нашел в настройках верлика где отключить эти сообщения. Есть какие-то мысли?
Наверное, имеет смысл обратить внимание пользователей, что хаблист без критических ошибок работает только на PHP 5.3.X, т.к. на предыдущих версиях возникает описанная в топике ошибка с сокетами, приводящая к зависанию.
В этом же топике доступно и исправление для php версии ниже 5.3. В дальнейшем оно будет добавлено в хаблист, а архив будет перезалит в тему.
Столкнулся с еще одной особенностью работы этого хаблиста. Раз в час он обменивается с хабами командой $BotINFO, что вызывает именно на VerliHub (версия 0.9.8e-r2) сообщение в опчат:
Код
The following BOT has just entered the hub :DCPinger/2.0.3; Visit http://inethub.olvi.net.ua for more information. -- IP=' x.x.x.x ' Host=' ' User=' hublist '
На птоке все ок. Не нашел в настройках верлика где отключить эти сообщения. Есть какие-то мысли?
Мыслей нет. Немного поковырял исходники - вывод этого сообщения зависит от флага botinfo_report. Попробуйте поискать его в конфиге и поставить там 0, а не 1.
Спасибо, сработало Как-то пропустил мимо глаз этот параметр.
На PHP 5.2.14 попробовал внести указанные изменения, заработало, но были периодические сообщения об ошибках, поэтому сменил на 5.3.8. Конечно, для некоторых может быть необходима работа именно на версии 5.2 из-за особенностей крутящихся на хостинге движков других сайтов.
На PHP 5.2.14 попробовал внести указанные изменения, заработало, но были периодические сообщения об ошибках, поэтому сменил на 5.3.8.
Неплохо бы эти ошибки озвучить. тогда и исправить что-то можно.
Автор: Enyby 23.11.2011, 11:27
В работе этого хаблиста существует ограничение - не более 256 хабов. Когда их количество станет больше этого числа, пингование перестанет работать. Это связано с реализацией функции php socket_select (под Windows точно работать не будет, а вот под Unix - нужно тестировать). Чтобы обойти это ограничение вам потребуется переписать код пингера на использование пула сокетов. В пуле должно быть не более 256 сокетов одновременно.
Автор: Enyby 14.12.2011, 18:55
Добавил в шапке версию 0.03 и ссылки на демо.
Автор: dj hoodo 20.12.2011, 19:03
Ковырял я, ковырял... и не наковырял в каком файле поменять унылые надписи "онлайн\оффлайн" на более веселые картинки... ну и провайдера добавлять хотябы в ручную
Дальше создать папку status с картинками, названными согласно статусам в БД. Желательно в таблице статусов изменить все наименования на анголоязыные: "Статус" => "status" и т. д.
По поводу провайдера - еще одно поле в базу данных, а потом добавить вывод на страницу.
Подумываю переписать на использование шаблона.
Автор: dj hoodo 21.12.2011, 16:06
Вот тут отдельное спасибо нарисовалось. А что это на Вашем сайте, какойто DB HUB в трехкратном размере кривовато опредиляется? или его просто криво добавили\настроили? или это один и тотже хаб вообще?
Автор: Enyby 21.12.2011, 16:09
Это три различных хаба. На них можно войти на все три одновременно с одним ником и коллизий не будет. Кто-то дорвался до готовой сборки видимо.
Автор: Mellon 27.12.2011, 8:45
to Enyby, недоценил тебя извеняюсь все не было времени, вот все же решил повторно поставить твой скрипт http://mydc.ru/r/?http://xdn.msk.ru/dcs/ веб часть отстой а все что касаемо пингера хорошо, не очень понравился вид написания запроса в бд а в работе отлично определяет стат хаба редиект, забанен и.т.п.. Сейчас проверю твой пингер на такие изьяны, есть такие хабцы - делаю подключение *** Подключение к x.x.x.x... *** Подключен далее хаб встает в самом клиенте не открывая список юзеров и вообще просто стоит, на этом пингер обычно тоже встает вообщем пока интересно что твой пингер покажет и встанет ли он...
И есть ещё такой нюанс написания таблицы 1. Нельзя в конфиге указать переферикс, это и странно даже в моем скрипте можно 2. Зачем под несколько колонок заводить столько таблиц hl_status и hl_hub не порядок, сразу же создал hublist_hubs и планирую сделать одну единую таблицу для всех значений... 3. Стоп вот и накрылся твой хаблист, добавил я вот такой вот хабец dchub://10.225.208.208 и если как ты говоришь что после пинга хабов не поддерживающих пинг мой хаблист встает и не пингует остальные хабы, то он хотя бы пингует те хабы которые до него да и после а вот твой сейчас показывает везде "оффлайн" значит после добавления хаба не поддерживающего пинг твой хаблист сразу раком встал а мой хоть как то работает и стоило столько времени пихать не рабочие хабы в мой скрипт. Я же этим не занимался ? вот все таки занялся в добавок у тебя при добавлении хаба фильтрация у меня тоже она есть но она просто отключена и что ты хотел мне доказать ? я это и так знаю
Все перепроверил http://mydc.ru/r/?http://xdn.msk.ru/dcs/ сделал повторный рефрешь, те баги о которых ты писал в моем хаблисте были вызваны именно этим или подобным хабом(их там было штуки 3) - при этом он хоть как то работал а это значит что в пингере есть время на пинговку хаба и если за заданый интервал времени от хаба нет вестей он продолжает идти дальше (но для написания этого я обошёлся 2-3 строчками так что механизьм этот несовершенен) В твоем же хаблисте сейчас везде пишет "оффлайн" и он отказываеться вообще пинговать остальные хабы - это то при добавлении одного багонутого хаба где в птохе - включена опция
Автор: mariner 27.12.2011, 8:52
Меллон, чем эта опция баганутая? Или у тебя опять словесный понос?
Автор: Mellon 27.12.2011, 9:19
Ты конечно извиняй но нет слов, я и так знаю что мой скрипт полное решето он лиж был создан для решения вот http://mydc.ru/r/?http://dc.piring-net.net/fox/index.html таких проектов, думал через 3 года после появления моего скрипта, действительно появился человек который предусмотрел все эти нюансы давно доработал пингер и остальное, но то что я вижу сейчас - просто ужаснулся... Ладно ещё пока погоняю твой скрипт на стабильность и баги, просто ранее стоял вопрос создания маленького локального списка(хаблиста) желательно в пределах сети - но редактировать список через бд было куда удобнее нежели соваться на форум и там вечно обновлять списки - в свое время я перебрал скриптов 20 этих хаблистов и ед проекты которые я так и не юзал это на перле - как показало время они самые стабильные..
Цитата(mariner @ 27.12.2011, 9:52)
Меллон, чем эта опция баганутая? Или у тебя опять словесный понос?
нет у тебя слабоумие читай пост повторно, или купи очки, где я писал что эта опция баганутая ? Для особых словестнопоносных троллей типо маринера - в краце если в хаблист enyby добавляешь хаб поддерживающий эту опцию то происходить следующие на картинке - http://mydc.ru/r/?http://www.nicosoft.ru/uploads/2011-12-27_083259.jpg
Автор: mariner 27.12.2011, 9:42
Цитата
обавлении одного багонутого хаба где в птохе - включена опция
Я вообще-то твои посты цитирую и получается, что хаб баганутый из-за этой опции. Ты уж обосную хотя бы, чем опция баганутая, почему же скрипт от Enyby работает у меня и вдруг не работает у тебя. Да, у меня хаб с это же опцией
Все, видимо, из-за моей "брутальности и бессердечности"
Меллон, вам тролли тока мерещатся. Тут пока только критики.
Автор: Mellon 27.12.2011, 10:10
mariner, вы или прекрасно понимаете что пост 2х смысленный и каждый понимает в меру своей распущенности или раз вы не тролль то я сделаю предположение что вам до 20. Я являюсь посетителем данного хаба и знаю о его проблемах и багах причем сама администрация хаба это не скрывает им до лампочки вообще все это, для того что бы не разводить пустую дискуссию можно было просто положиться на мое мнение. Но раз вы такой недоверчевый то милости прошу проведите на хабе так годик или 2 и осознаете да и дело вовсе там не в том что он баганутый а в том что администрация положила на это дело давно.... Но а я лиж рад что есть такие хабы с данной опцией с помощью которых можно помочь в отладке и тестировании того же хаблиста.
Автор: mariner 27.12.2011, 11:11
Давай так. Я сейчас разверну виртуалку на убунте и проверю. Если все будет пинговаться - ты публично извинишься перед Enyby.
Ну и что же мы видим? А видим мы следующее. В хаблист добавлено 2 хаба c "волшебной опцией". Плюс добавлен просто сервер "от балды", на котором пингер хаблиста из ЭТОЙ темы затыкается и не обрабатывает. И что же? Все обработано верно.
Результат доступен http://mydc.ru/r/?http://213.141.136.68/
Собственно что и требовалось доказать: меллон - peace door ball!
Автор: Enyby 27.12.2011, 11:25
Mellon: Я не знаю что у тебя происходит с хаблистом, но ни одна страница хаба не работает:
Цитата
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\Site\xdn.msk.ru\dcs\hub.php on line 29
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in D:\Site\xdn.msk.ru\dcs\hub.php on line 40 Хаб не найден Хаб не найден, проверьте ссылку по которой вы пришли. Полный список всех хабов находится по ссылке Все хабы
Возможно у меня баги, а возможно ты уже что-то наменял. UPD: Судя по тому, что у маринера все работает, то склоняюсь ко второму варианту. Так же я вижу в списке хабов названия всех (!) хабов. А это значит, что пинг был успешен. потому что если хаб не пингуется, то он висит с титулом "нет информации". Ну и там есть шара, число юзеров и прочее, чего бы небыло, если бы хабы действительно не пинговались.
to Enyby, читай выше добавляю хаб твой хаблист встает, шара и юзеры ? лол на дату посмотри юзеров там около 200было на хабе с прошлой пинговки, запускаю новую пинговку уже с новым хабом который я добавил где на одном из хабов реально 160 юзеров при этом твой хаблист показывает 200бзеров - с прошлого пинга из базы, так что не смеши меня напихал в мой скрипт своих лаже хабов я тоже могу запихнуть точно такие же хабы после которых у тебя весь хаблист встанет, почему же у тебя в демке нет тех хабов что ты мне надобавлял, за умного сойти решил ?
Автор: mariner 27.12.2011, 13:18
Цитата
to mariner ты под дурочка что ли косишь или под дауна ?
Дядь, ты за базар когда отвечать то начнешь? Или ты не "дядя", а так, ребёнок малый? Ты заявил выше, что мол "с этой опцией не пингует". Были выложены опровержения. Кроме того - я не в вашей локалке. Дай туда доступ и я с удовольствие проверю и тот хаб.
Автор: Mellon 27.12.2011, 13:47
вот сейчас я удалил этот хаб из твоего хаблиста, запускаем http://mydc.ru/r/?http://xdn.msk.ru/dcs/refresh.php и теперь все онлайн и юзеры и шара норм отображает http://mydc.ru/r/?http://xdn.msk.ru/dcs/ Да я немного изменил там кое что но с отображением это не как не связанно я лиж изменил название таблицы hl_hub на hublist_hubs о чем к стате уже писалось ранее, все запросы которые отвечают за пинг хаба и отображение были так же переписаны. В addhub.php там просто обращение идет к hl_hub попзже поменяю на hl_hub. Баг был ещё до того как я решил обеденение таблиц сделать, так что могу продемонстрировать все на чистой коппи, буде все тоже самое...
Цитата(mariner @ 27.12.2011, 14:18)
Дядь, ты за базар когда отвечать то начнешь? Или ты не "дядя", а так, ребёнок малый? Ты заявил выше, что мол "с этой опцией не пингует". Были выложены опровержения. Кроме того - я не в вашей локалке. Дай туда доступ и я с удовольствие проверю и тот хаб.
Несешь ахинею вечно ты не на нашей локалке а абонент пиринговой сети и этот хаб что я те дал не имеет отношения к моей локалке он так же в пиринг сети, добавь ровно столько же хабов сколько и у меня в хаблисте, таких-же и добавь этот адрес которого уже звучал не однокартно, далее запусти http://mydc.ru/r/?http://xdn.msk.ru/dcs/refresh.php посмотрим что будет а то умные пля добавили 4 хаба причем на подбор а мне в хаблист хабов напихал enyby вообще не рабочих и так типо постебал... За базар как ты выражашься я уже ранее ответил и там был предоставлен скриншот - так что та ахинею которую ты несешь те не поможет
to mariner, зайди на http://mydc.ru/r/?http://213.141.136.68/ и посмотри ну и где извенения ? to enyby а тебе ещё предстоит обьяснить нафига ты запихнул мне в хаблист 3 не рабочих хаба на одном из которых вот это в клиенте дс *** Подключение к x.x.x.x... *** Подключен после чего хоть прожди 10 мин хоть час все так и будет вроде подключен а хаб не открывает, и мой хаблист ещё хоть как то фурыкал, когда твой загнулися сразу лиж от одного хаба не поддерживающем пинг с хблистов
Автор: mariner 27.12.2011, 14:06
Цитата
to mariner, зайди на http://mydc.ru/r/?http://213.141.136.68/ и посмотри ну и где извенения ?
О, ты даже не поленился напихать туда локальных хабов, к которым у интернет-хоста доступа нет. Да ты молодец!
Убрал пингер под кат, чтобы личности не могли его ручками дергать, а то дергают, а на хабах ограничения врубаются на вход.
Кстати, а что я должен увидеть?
Автор: Enyby 27.12.2011, 14:14
to Mellon: Короче. Это не имеет смысла. Я не отвечаю за хаблист с модификациями. Что ты там делал - одному богу известно. Вижу что не работают страницы хаба. Вижу что пингование работает нормально. Дальнейший разговор имеет смысл только на оригинальной версии хаблиста.
PS Добавил хабы в демо.
И да. "Где едим, там и срем", простите за грамматику. Может мой хаблист надо обсуждать в моей теме? Тред снова скатывается в срач.
Автор: Mellon 27.12.2011, 15:19
Цитата(Enyby @ 27.12.2011, 15:14)
to Mellon: Короче. Это не имеет смысла. Я не отвечаю за хаблист с модификациями. Что ты там делал - одному богу известно. Вижу что не работают страницы хаба. Вижу что пингование работает нормально. Дальнейший разговор имеет смысл только на оригинальной версии хаблиста.
PS Добавил хабы в демо.
И да. "Где едим, там и срем", простите за грамматику. Может мой хаблист надо обсуждать в моей теме? Тред снова скатывается в срач.
Что я напихал ? ты хоть разбираешься маленько я просто переименовал тэйбл бд, я могу и убрать это и оригинал поставить, всеравно все будет тоже самое, изменение названия таблицы не как не связанно вообще с работой хаба на мозги не капай ок ? Я возвращал оригиналь там все тоже самое...
Ладно потом поставлю чистый оригинал и дам линк... Больше в чем уверен что там будет все тоже самое, так как сейчас то на http://mydc.ru/r/?http://xdn.msk.ru/dcs - после удаления того хаба все норм же работает...)
Автор: mariner 27.12.2011, 15:24
Эй, меллон, так дай доступ в локалку. Глянуть ну очень охота на тот хаб.
Автор: Ksan 27.12.2011, 17:01
Цитата(Mellon)
раз вы не тролль то я сделаю предположение что вам до 20.
На баш!
PS: [To All] И вообще, ребятки, зачем вы мучаете животное? Забейте (забаньте?) его и хватит его бред читать.
Автор: Alexey 28.12.2011, 7:02
Цитата(Mellon @ 27.12.2011, 13:47)
to mariner, зайди на http://mydc.ru/r/?http://213.141.136.68/ и посмотри
Я не маринер, но я зашёл и увидел рабочий хаблист. Или я не туда смотрю?
Цитата(Enyby @ 27.12.2011, 14:14)
И да. "Где едим, там и срем", простите за грамматику. Может мой хаблист надо обсуждать в моей теме?
Перенёс.
Автор: KT315 28.12.2011, 15:29
Цитата(mariner @ 27.12.2011, 16:24)
Эй, меллон, так дай доступ в локалку. Глянуть ну очень охота на тот хаб.
Могу дать, посмотришь
Автор: mariner 28.12.2011, 20:39
Так, проверил я 10.225.208.208))
Вы не поверите, но предположение, что меллон peacedoorball подтвердились
ну, господа. Я вот верю только своим глазам. Вот и проверил, из принципа.
Автор: dj hoodo 29.12.2011, 20:03
ну а я сразу не поверил в эти сказки... я то знаю, что перед тем как этот скрипт был выложен здесь, он стоял (и до сих пор стоит) в сети Триолан не один год, и я думаю что если бы такой баг был, то Enyby, его за несколько лет обнаружил бы уже.
Автор: Mellon 1.1.2012, 17:16
И что же ты там проверил ? после хаба Нет информации dchub://www.ya.ru:80 Таймаут 0/0 0/0 Все остальные хабы оффлайн, может быть объяснишь ? я ещё промолчал о том что ты не тестил тот хаб что я тебе дал
Автор: Enyby 17.1.2012, 9:34
Mellon, проверка хабов идет совсем не в том же порядке, в каком они выводятся на экран. Они проверяются все одновременно.
Обнаружил интересную штуку. Есть один http://mydc.ru/r/?https://bugs.php.net/bug.php?id=30852. Если будет много хабов и будет старый PHP, то Apache при пинге будет крашится.
ADD: Оттуда же:
Цитата
Windows can only select(), by default, a maximum of 64 handles at one time.
5.0.3 changes this limit to 256 in the Streams subsystem; you can try this yourself with a stable snapshot and using the native functions stream_socket_client(), stream_socket_server() and stream_select().
I would expect this change to also work with the sockets extension. It builds ok here with 5.0.3, so it sounds like you do indeed have a configuration issue.
Short version: try a 5.0.3 snapshot, it should behave better
Вывод: используйте версию PHP не ниже 5.03. В этом случае проблемы пингования начнутся с 256 хабов. В противном случае порог куда ниже - 64 хаба. В будущем постраюсь переписать на использование пула сокетов с очередью.
3. Хаблист заточен под пингование 1 раз в 5 минут. Если вы используете другой интервал, то графики на странице хаба, могут иметь удручающий вид. Можете попробовать их заменить на флеш-компоненты, это должно обеспечить лучший вид.
Предлагаю немного модифицировать код файла day.php, чтобы при увеличении интервала пингов с 5 минут до 10-20-30, не получать на дневных графиках частокол.
Неплохая идея. Только сначала переменную $oldi нужно инициализировать.
Автор: ShadoWx 2.2.2012, 9:10
Возможно вы уже знаете о багах, но я все же отпишусь
На страничках хабах, некорректно отображаются данные, включая графики в качестве хаб-серверов используются rushub'ы Подскажите как сделать по умолчанию сортировку по кол-ву онлайн пользователей
Автор: Enyby 2.2.2012, 11:55
Ну, во-первых, я не вижу никаких особых проблем с русхабом: http://mydc.ru/r/?http://inethub.olvi.net.ua/dc/hub.php?id=789http://mydc.ru/r/?http://hublist.godc.ru/hub.php?id=1 В будущем я собираюсь переделать публичную версию на пингование раз в час с графиками на флеш. Это собираюсь. Но дел очень много, так что не факт что соберусь или что это будет скоро.
Вопрос: вот когда пингую хабы, имя бота Hublist, где его изменить на своё имя? Ответ: Файл dc.php:
Вопрос: Где показывает сколько юзеров на хабе, там через палку / стоит 0,1,2,3 и т. д. как это убрать? Ответ: Это среднее число юзеров на хабе за неделю. Через неделю будет нормальные числа. Это параметр адекватно отражающий число юзеров хаба, так как текущее значение меняется быстро. Можно убрать в выводе, но на него много чего завязано, включая дефолтную сортировку. в index.php:
Проблем пока что нету, пример работы http://mydc.ru/r/?http://hublist.rznlive.ru/
Автор: mariner 28.2.2012, 8:00
Ну да, все норм, тока графики кривые
Автор: ke(x)one 22.3.2012, 13:14
как настроить планировщик задач что бы хаблист обновлялся каждые 2-10 минут?
Автор: Enyby 22.3.2012, 15:59
Понимаю, бан в гугле это тяжело...
Ну не переживай, у меня много свободного времени, так что я поискал за тебя. Вот результат: http://mydc.ru/r/?http://www.ixbt.com/soft/ms-task-scheduler.shtml Если тебе еще что-то нужно будет, ты только напиши. Тысячи пользователей только и ждут твоих простых и очевидных вопросов, так что тебе даже не нужно будет напрягаться формировать поисковый запрос и смотреть результаты.
Сунулся у себя в базу данных и обнаружил, что там сохранены данные даже годовой давности. Т.е. используются данные за последние две недели, а хранятся вообще все, которые собирались за период существования хаблиста. Отсюда вопрос: Это у меня что-то неладно, или в данном хаблисте не предусмотрено удаление из базы данных старше 2-х недель?
Автор: Enyby 17.1.2013, 22:23
Я думал над этим, но статистику оставил, потому что были планы перейти на Flash/XML графики с просмотром истории. Если мешает - добавьте запрос дропающий все что старше двух недель. Самый простой вариант - на главную страницу. Можно еще в крон.
Только прощу сильно не засирать, ещё в стадии разработки, кое что ещё будет проделывается, КСС, Дизайн и т д
Принимаются советы по улучшению.
Спасибо Enyby за Помощь и за Хаблист
Автор: Артём 10.2.2013, 12:35
CrazyKiller, кнопочка ВернутЬся без мягкого знака у тебя
Автор: CrazyKiller 10.2.2013, 12:56
Цитата(Артём @ 10.2.2013, 13:35)
CrazyKiller, кнопочка ВернутЬся без мягкого знака у тебя
Сенкс, не заметил, ночью делал кнопки )))
Автор: Артём 10.2.2013, 12:59
CrazyKiller, хаб не добавляет, никакой инфы при попытки добавить не пишет.
Автор: CrazyKiller 10.2.2013, 13:00
Цитата(Артём @ 10.2.2013, 13:59)
CrazyKiller, хаб не добавляет, никакой инфы при попытки добавить не пишет.
адрес хаба ?
Сабмит чет лаганул, вернул прежний, пробуй.
Автор: dj hoodo 17.2.2013, 19:28
Прикольно, и мой хаб там есть а что с триолан.ин уа там с НГ не оновляется хаблист? и хаб лежит
Автор: CrazyKiller 19.2.2013, 14:04
Цитата(dj hoodo @ 17.2.2013, 19:28)
Прикольно, и мой хаб там есть а что с триолан.ин уа там с НГ не оновляется хаблист? и хаб лежит
уже обновляется, добавлю в мониторинг себе парсер пожже))
Исправили кнопку Добавить хаб, зацениваем )))
Автор: dj hoodo 14.3.2013, 1:14
надо бы обьяснить назначение иконок в статусе. ну зеленинькая понятно- онлайн краснинькая с крестиком -оффлайн.. но есть исчо синенькая желтинькая... это с первого взгляда хз...
Автор: CrazyKiller 18.3.2013, 0:53
Цитата(dj hoodo @ 14.3.2013, 1:14)
надо бы обьяснить назначение иконок в статусе. ну зеленинькая понятно- онлайн краснинькая с крестиком -оффлайн.. но есть исчо синенькая желтинькая... это с первого взгляда хз...
Как-то так, думаю понятно будет всем
Автор: marsss 5.4.2013, 22:14
Здравствуйте! есть несколько вопросов: 1.Как можно сделать обновление при входе на хаб лист то есть заходит человек или он просто обновляет страницу и пока он ее обновляет подключается refresh.php то есть кто зайдет на хаб лист как раз и инфу обновит 2. Происходит ошибка при обновлении : /refresh.php Выдёт: Fatal error: Call to undefined function socket_create() in D:\...\...\hubs\dc.php on line 94 в чем может быть проблема?
Автор: Saymon21 5.4.2013, 22:16
Цитата
Fatal error: Call to undefined function socket_create() in D:\...\...\hubs\dc.php on line 94
Установить/Включить сокеты.
Автор: dj hoodo 18.4.2013, 19:50
Цитата(marsss @ 5.4.2013, 23:14)
Здравствуйте! есть несколько вопросов: 1.Как можно сделать обновление при входе на хаб лист то есть заходит человек или он просто обновляет страницу и пока он ее обновляет подключается refresh.php то есть кто зайдет на хаб лист как раз и инфу обновит
при этом будет происходить пинги хабов, что их владельцам не понравится... раз в час самое оно
Автор: ANDRBEST 26.4.2013, 18:15
на серве открыл браузером refresh.php, а в него прописал перед кодом php:
Раскрывающийся текст
<script type="text/javascript"> function locs(){ document.location.href=""; } setTimeout("locs()", 300000); </script>
Смысл видимо в изобретении велика, при этом не лучшими способами.
Автор: dj hoodo 26.7.2013, 11:46
Установил хаблист на хостинг. Думал будут проблемы с пингованием или графиками... Но все ОК что не может не радывать. Тини хаблист на хостинг не зальешь...