Mikhailo 0 Опубликовано: 3 ноября 2007 Рассказать Опубликовано: 3 ноября 2007 Добрый день. Зайдите пожалуйста на сайт 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 Цитата Ссылка на сообщение Поделиться на других сайтах
flo.mAster 7 Опубликовано: 3 ноября 2007 Рассказать Опубликовано: 3 ноября 2007 а сайт то какой.... мама мия....Снять ш****, лючшее п****.... Ужассс.. Цитата Ссылка на сообщение Поделиться на других сайтах
Umbrellа 0 Опубликовано: 4 ноября 2007 Рассказать Опубликовано: 4 ноября 2007 Mikhailo, ошибка в скрипте online.php и к DLE не имеет никакого отношения. А именно ошибка в запросе к БД - скрипт не видел, ничего не могу сказать по этому поводу. Цитата Ссылка на сообщение Поделиться на других сайтах
Mikhailo 0 Опубликовано: 4 ноября 2007 Рассказать Опубликовано: 4 ноября 2007 Автор Да как бы понимаешь, уважаемый зонт, до переезда на выделенный сервер всё прекрасно работало, сам скрипт тоже никаких проблем не доставал. А как мы переехали на ВПС, приключилась вот такая вот беда. Я понимаю, что проблема очень даже легко решаема, я думаю, что-то просто немного не так встало. Но вот не знаю я что именно, потому бы и хотел спросить уважаемых форумчан, что они думают по этому поводу. Update. Блок я разумеется временно отключил, чтобы не вылазила ошибка, но сам текст вы видите. Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 4 ноября 2007 Рассказать Опубликовано: 4 ноября 2007 Mikhailo, ну ты нам сторочки покажи, указанные в ошибках Цитата Ссылка на сообщение Поделиться на других сайтах
Zergio 0 Опубликовано: 5 ноября 2007 Рассказать Опубликовано: 5 ноября 2007 а сайт то какой.... мама мия....Снять ш****, лючшее п****.... Ужассс.. А я был в шоке от этого: Погиб Александр Дедюшко в ДТП Шлюхи Москвы, снять проститутку, интим досуг Отличное сочетание. Цитата Ссылка на сообщение Поделиться на других сайтах
Mikhailo 0 Опубликовано: 5 ноября 2007 Рассказать Опубликовано: 5 ноября 2007 Автор Лайфстар, вот эти строчки: 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&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&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&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; Вообщем, как я уже говорил, раньше всё работало... Цитата Ссылка на сообщение Поделиться на других сайтах
Umbrellа 0 Опубликовано: 5 ноября 2007 Рассказать Опубликовано: 5 ноября 2007 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()); И надпись скопировать в форум, хотя бы проблему поймём. Цитата Ссылка на сообщение Поделиться на других сайтах
GREY-SPB 0 Опубликовано: 5 ноября 2007 Рассказать Опубликовано: 5 ноября 2007 при 10к уников он вроде бы не рекомендован Цитата Ссылка на сообщение Поделиться на других сайтах
Mikhailo 0 Опубликовано: 5 ноября 2007 Рассказать Опубликовано: 5 ноября 2007 Автор А вот, Сергей ака Серый. Не могли бы Вы с этим вопросом поподробнее. Хотя мод и хороший, но сильно то перегружать базу не хочется. У вас есть факты, которые говорят против этого скрипта при 10к? Зонт, я всё уяснил, завтра отпишусь... Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.