Перейти к публикации

Ошибка с модулем "Он-Лайн"


Рекомендованные сообщения

Добрый день. Зайдите пожалуйста на сайт http://pozzitiv.ru/ и посмотрите на текст ошибки вверху сайта. Почему такое происходит? Это один модуль, который выводит кол-во посетителей он-лайн. До переезда на ВПС (выделенный виртуальный сервер) он работал как и надо, а сейчас выдаёт ошибку, с чем это связано??

Вот текст самой ошибки

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/pozzitiv.ru/httpdocs/engine/modules/online.php on line 212 Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/pozzitiv.ru/httpdocs/engine/modules/online.php on line 15 Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/pozzitiv.ru/httpdocs/engine/modules/online.php on line 18 Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/pozzitiv.ru/httpdocs/engine/modules/online.php on line 92

Движок 6.2

Ссылка на сообщение
Поделиться на других сайтах

Mikhailo, ошибка в скрипте online.php и к DLE не имеет никакого отношения.

А именно ошибка в запросе к БД - скрипт не видел, ничего не могу сказать по этому поводу.

Ссылка на сообщение
Поделиться на других сайтах

Да как бы понимаешь, уважаемый зонт, до переезда на выделенный сервер всё прекрасно работало, сам скрипт тоже никаких проблем не доставал. А как мы переехали на ВПС, приключилась вот такая вот беда.

Я понимаю, что проблема очень даже легко решаема, я думаю, что-то просто немного не так встало.

Но вот не знаю я что именно, потому бы и хотел спросить уважаемых форумчан, что они думают по этому поводу.

Update. Блок я разумеется временно отключил, чтобы не вылазила ошибка, но сам текст вы видите.

Ссылка на сообщение
Поделиться на других сайтах

а сайт то какой.... мама мия....Снять ш****, лючшее п****.... Ужассс..

А я был в шоке от этого:

Погиб Александр Дедюшко в ДТП

Шлюхи Москвы, снять проститутку, интим досуг

Отличное сочетание.

Ссылка на сообщение
Поделиться на других сайтах

Лайфстар, вот эти строчки:

212 list($num_rows) = mysql_fetch_row($result);

15 list($guest_online_num) = mysql_fetch_row($result);

18 list($member_online_num) = mysql_fetch_row($result);

92 while (list($uid, $uname, $time, $ip) = mysql_fetch_row($result)) {

А вот и сам скрипт:

<?php

// äëÿ äâèæêà Dle

function b_whosonline_show() {

global $db, $member_id, $config_http_home_url, $config_allow_alt_url;

$ckolday= '1'; //âûâîä ñêîëüêî ïî âðåìåíè áûëè äðóãèå ïîëüçîâàòåëè(1-äà; 0-íåò)

$days = '2'; //íå áîëüøå xx äíåé ÷åì ìåíüøå òåì ëó÷øå (à òî çàáú¸òå áàçó ...)

b_whosonline_update($days);

$result = $db->query("SELECT COUNT(*) FROM " . PREFIX . "_lastseen WHERE uid=0 AND online=1");

list($guest_online_num) = mysql_fetch_row($result);

$result = $db->query("SELECT COUNT(*) FROM " . PREFIX . "_lastseen WHERE uid>0 AND online=1");

list($member_online_num) = mysql_fetch_row($result);

$who_online_num = ($guest_online_num + $member_online_num);

$blockonline = "";

$blockonline .= "".$guest_online_num." Ãîñòè";

$blockonline .= "<br />";

$blockonline .= "".$member_online_num." Ïîëüçîâàòåëè";

if ($member_online_num > 3) {

$blockonline .= "<br /><br />";

$result = $db->query("SELECT uid, username, ip FROM " . PREFIX . "_lastseen WHERE uid > 0 AND online=1 LIMIT 0,5");

while (list($memuid, $memusername, $ip) = mysql_fetch_row($result)) {

if ($member_id["user_group"] == 1) {

$user_ip = $ip;

}else{

$user_ip = "";

}

if ($config_allow_alt_url == "yes"){

$blockonline .= "<a title=\"".$user_ip."\" href=\"".$config_http_home_url."user/".urlencode($memusername)."/\">".stripslashes($memusername)."</a>, ";

}else{

$blockonline .= "<a title=\"".$user_ip."\" href=\"".$config_http_home_url."?subaction=userinfo&amp;user=".urlencode($memusername)."\">".stripslashes($memusername)."</a>, ";

}

}

$blockonline .= " ...";

} elseif ($member_online_num != 0) {

$blockonline .= "<br /><br />";

$first = 0;

$result = $db->query("SELECT uid, username, ip FROM " . PREFIX . "_lastseen WHERE uid>0 AND online=1");

while (list($memuid, $memusername, $ip) = mysql_fetch_row($result)) {

if ($member_id["user_group"] == 1) {

$user_ip = $ip;

}else{

$user_ip = "";

}

if ($first!=0) {

$blockonline .= ", ";

}

if ($config_allow_alt_url == "yes"){

$blockonline .= "<a title=\"".$user_ip."\" href=\"".$config_http_home_url."user/".urlencode($memusername)."\">".stripslashes($memusername)."</a>";

}else{

$blockonline .= "<a title=\"".$user_ip."\" href=\"".$config_http_home_url."?subaction=userinfo&amp;user=".urlencode($memusername)."\">".stripslashes($memusername)."</a>";

}

$first= 1;

}

}

if ($member_id) {

$blockonline .= "<br /><br />";

$blockonline .= "Âû âîøëè êàê: ".$member_id["name"]."";

$blockonline .= "<br />";

} else {

$blockonline .= "<br /><br />";

$blockonline .= "<b>Âû ãîñòü çäåñü.</b>";

$blockonline .= "<br /><a href='/index.php?do=register'>+ ðåãèñòðàöèÿ</a><br />";

}

if ( $ckolday == 1 ) {

$myID = "";

if ( $member_id ) {

$myID = $member_id["user_id"];

}

$mintime = (time() - ($days * 86400));

$result = $db->query("SELECT uid, username, time, ip FROM " . PREFIX . "_lastseen WHERE (uid > 0) AND (time > $mintime) AND (online = 0) ORDER BY time DESC LIMIT 0, 5");

while (list($uid, $uname, $time, $ip) = mysql_fetch_row($result)) {

if ($uid != $myID) {

$lastvisit = b_whosonline_create($time);

$content .= "<br />";

if ($config_allow_alt_url == "yes"){

$content .= "<a title=\"".$ip."\" href=\"".$config_http_home_url."user/".urlencode($uname)."\">".stripslashes($uname)."</a>";

}else{

$content .= "<a title=\"".$ip."\" href=\"".$config_http_home_url."?subaction=userinfo&amp;user=".urlencode($uname)."\">".stripslashes($uname)."</a>";

}

$content .= ": $lastvisit";

}

}

if ( $content ) {

$blockonline .= "<br />Ïîñëåäíèé ïîñåòèòåëü:";

$blockonline .= $content;

}

}

return $blockonline;

}

//---------------------------------------------------------------------------------------//

function b_whosonline_create($date) {

$realtime = time() - $date;

$lastvisit = "";

$days = "";

$hours = "";

$mins = "";

// ñêîëüêî äíåé íàçàä?

if ($realtime >= 86400) {

$days = floor($realtime / 86400);

$realtime -= (86400 * $days);

}

// how many hours ago?

if ($realtime >= 3600) {

$hours = floor($realtime / 3600);

$realtime -= (3600 * $hours);

}

// how many minutes ago?

if ($realtime >= 60) {

$mins = floor($realtime / 60);

$realtime -= (60 * $mins);

}

if ($mins == 60) {

$mins = 0;

$hours += 1;

}

if ($days > 1) {

$lastvisit .= "".$days." Äíåé";

} elseif($days == 1) {

$lastvisit .= "1 Äåíü";

}

if ($hours > 0) {

if ($hours == 1) {

$lastvisit .= "1 ÷àñ";

} else {

$lastvisit .= "".$hours." ÷";

}

}

if ($mins > 0) {

if ($mins == 1) {

$lastvisit .= "1 ì.";

} else {

$lastvisit .= "".$mins." ìèí";

}

}

$lastvisit .= ' íàçàä';

return trim($lastvisit);

}

///////////////////

function b_whosonline_update($days) {

global $db, $member_id;

$time = time();

$anonpast = ($time - 300);

$userpast = ($time - (86400 * $days));

$db->query("DELETE FROM " . PREFIX . "_lastseen WHERE (uid=0 AND time<$anonpast) OR (time<$userpast)");

$db->query("UPDATE " . PREFIX . "_lastseen SET online=0 WHERE time<$anonpast");

if (getenv("HTTP_CLIENT_IP")) $ip = getenv("HTTP_CLIENT_IP");

else if(getenv("HTTP_X_FORWARDED_FOR")) $ip = getenv("HTTP_X_FORWARDED_FOR");

else if(getenv("REMOTE_ADDR")) $ip = getenv("REMOTE_ADDR");

else $ip = "not detected";

if ($member_id) {

$uid = $member_id["user_id"];

$uname = $member_id["name"];

} else {

$uid = 0;

$uname = 'anonymous';

}

$sql = "SELECT COUNT(*) FROM " . PREFIX . "_lastseen WHERE uid=$uid";

if ($uid == 0) {

$sql .= " AND ip='$ip'";

}

$result = $db->query($sql);

list($num_rows) = mysql_fetch_row($result);

if ( $num_rows > 0) {

$sql = "UPDATE " . PREFIX . "_lastseen SET time='$time', ip='$ip', online=1 WHERE uid=$uid";

if ($uid == 0) {

$sql .= " AND ip='$ip'";

}

$db->query($sql);

} else {

$sql = "INSERT INTO " . PREFIX . "_lastseen SET uid=$uid, username='$uname', time='$time', ip='$ip', online=1";

$db->query($sql);

}

}

$block = b_whosonline_show();

?>

И описание к нему:

--------------------------------------------------------------------

XakBIOS, version 2.1

Copyright © 2003 - 2006 XakBIOS. All rights reserved.

--------------------------------------------------------------------

=====================================================

Author: Ryder(Pr0ac3r)

Web: http://www.xakbios.net

E-mail: ryder@xakbios.net

=====================================================

как установить ?

1)распаковать в корень сайта, добавить таблицу в mysql

2) открыть файл \engine\init.php

и добавить после

include_once $tpl->dir.'/login.tpl';

}

строчку

include_once ENGINE_DIR.'/modules/online.php';

3) открыть index.php

и после

$tpl->set('{THEME}', $config_http_home_url.'templates/'.$config_skin);

добавить

$tpl->set('{online}', $block);

и уже идём в

templates\ваша тема\

и вставляем где хотим видеть посетителей {online}

если хотите отключить вывод сколько пользователь был по времени то найдите в файле

$ckolday=1; //вывод сколько по времени были другие пользователи(1-да; 0-нет)

и измените $ckolday=1; на $ckolday=0;

Вообщем, как я уже говорил, раньше всё работало...

Ссылка на сообщение
Поделиться на других сайтах

Mikhailo, ошибок в скрипте нету, но посмотрев это:

$sql = "SELECT COUNT(*) FROM " . PREFIX . "_lastseen WHERE uid=$uid";

if ($uid == 0) {

	$sql .= " AND ip='$ip'";

}

$result = $db->query($sql);

list($num_rows) = mysql_fetch_row($result);

можно сделать предположение:

При переезде был снят дамп базы данных с администрационного центра движка, а как известно с версии 6.0 (вроде),

DLE выбирает с базы только родные таблицы, не трогая посторонние, и совершенно очевидно, что при запросе SELECT COUNT(*) FROM " . PREFIX . "_lastseen просто возвращается ответ, что таблицы lastseen не существует.

Могу посоветовать после строки $result = $db->query($sql); добавить die(mysql_error());

И надпись скопировать в форум, хотя бы проблему поймём.

Ссылка на сообщение
Поделиться на других сайтах

А вот, Сергей ака Серый. Не могли бы Вы с этим вопросом поподробнее. Хотя мод и хороший, но сильно то перегружать базу не хочется. У вас есть факты, которые говорят против этого скрипта при 10к?

Зонт, я всё уяснил, завтра отпишусь...

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...