+2
судя по всему это означает превышение значения MySQL у твоего хостинг провайдера на тарифе.

попробуй в файле Database.class.php после этих строк:


$oDbSimple->query("set character_set_client='utf8'");
$oDbSimple->query("set character_set_results='utf8'");
$oDbSimple->query("set collation_connection='utf8_bin'");


добавить вот такую строку

$oDbSimple->query("SET SQL_BIG_SELECTS=1");


незабудь почистить кэш после всего этого.
  • avatar
  • SergiO
  • 31 июля 2010, 15:38
0
Действительно, проблема в нарушении целостности данных в базе — имеются комменты, ссылающиеся на удаленные топики. Почему-то скрипт конвертации, на который была ссылка выше, мне не помог. Пришлось удалять комментарии к несуществующим топикам вручную:

delete from prefix_comment_online where target_id not in (select topic_id
 from prefix_topic);


После этой операции и очистки кеша модуль прямого эфира заработал нормально.

Подозреваю, что надо бы ещё почистить таблицу prefix_comment, где тоже есть комментарии к несуществующим топикам, но пока не стал этого делать, потому что не вижу ни одного негативного проявления.
0
Пишу полностью что и как.
Открываем файл /classes/hooks/HookStatisticsPerformance.class.php
После
class HookStatisticsPerformance extends Hook {
	public function RegisterHook() {
		$this->AddHook('template_body_end','Statistics',__CLASS__,-1000);


Добавляем
$this->AddHook('topic_show','TopicShow');


Далее, после
public function Statistics() {
		$oEngine=Engine::getInstance();
		
		$iTimeInit=$oEngine->GetTimeInit();
		$iTimeFull=round(microtime(true)-$iTimeInit,3);
		$this->Viewer_Assign('iTimeFullPerformance',$iTimeFull);
		
		$aStats=$oEngine->getStats();
		$aStats['cache']['time']=round($aStats['cache']['time'],5);
		$this->Viewer_Assign('aStatsPerformance',$aStats);
		
		$this->Viewer_Assign('bIsShowStatsPerformance',Router::GetIsShowStats());
		return $this->Viewer_Fetch('statistics_performance.tpl');
	}


Добавляем
public function TopicShow($aParams) {
        $oTopic=$aParams['oTopic'];
        $oTopic->setCountRead($oTopic->getCountRead()+1);
        $this->Topic_UpdateTopic($oTopic);
    }


В шаблоне добавляем в topic.tpl или в topic_list.tpl
{$oTopic->getCountRead()}
0
такая же ситуация была на этом сайте, это проблема связанна с Suhosin-Patch для php
у себя сделал suhosin.session.encrypt=off в php.ini, помогло
  • avatar
  • ort
  • 16 июня 2010, 13:21
0
Нет, не все сразу. Очень смешно кстати. Я так понял не у меня первого такая проблема с LS.

ошибка:
[Tue Jun 15 19:57:43 2010] [error] [client 207.46.195.232] ALERT — canary mismatch on efree() — heap overflow detected (attacker '20
7.46.195.232', file '/home/www/blog.***.ru/www/engine/include/function.php', line 318)

из всех логов появляется только в LiveStreet. IP и скрипт различаются, конечно.
  • avatar
  • floyd
  • 16 июня 2010, 10:56
0
В /top/ и /my/ блоков никогда и не было, если конечно Вы сами не желаете их туда вставить, а поэтому скорее вот так:
/**
 * Настройки вывода блоков
 */
$config['block']['rule_index_blog'] = array(
	'path' => array( 
'___path.root.web___/blog$',
'___path.root.web___/blog/*$',
'___path.root.web___/blog/*/*$',
'___path.root.web___/index/*$',
'___path.root.web___/blog/*/*\.html$',
'___path.root.web___/blog/*\.html$',
),
  • avatar
  • daglex
  • 01 июня 2010, 12:02
+2
хмм а в конфиг посмотреть не судьба?)
config/config.php:

/**
* Настройки вывода блоков
*/
$config['block']['rule_index_blog'] = array(
'path' => array(
'___path.root.web___/blog$',
'___path.root.web___/blog/*$',
'___path.root.web___/blog/*/*$',
'___path.root.web___/index/*$',
'___path.root.web___/blog/*/*\.html$',
'___path.root.web___/blog/*\.html$',
'___path.root.web___/top$',
'___path.root.web___/top/*$',
'___path.root.web___/top/*/*$',
'___path.root.web___/my/*$',
'___path.root.web___/my/*/*$',
),
пропиши так, и глюка не будет...)
или я в чём-то не прав?)
+2
Проблема в не целостности базы, возможно она была MyISAM.
Конвертировать текущую 0.3.1 БД в нормальный целостный вид можно этим скриптом. Далее уже получившуюся БД конвертировать в 0.4.
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
set_time_limit(0);


$conn1 = mysql_connect("localhost", "root", "");
$conn2 = mysql_connect("localhost", "root", "",true);

if (!$conn1) {
    echo "Unable to connect to DB: " . mysql_error();
    exit;
}
  
if (!mysql_select_db("livestreet03",$conn1)) {
    echo "Unable to select mydbname: " . mysql_error();
    exit;
}
if (!mysql_select_db("livestreet03new",$conn2)) {
    echo "Unable to select mydbname: " . mysql_error();
    exit;
}
mysql_query("set character_set_client='utf8'",$conn1);
mysql_query("set character_set_results='utf8'",$conn1);
mysql_query("set collation_connection='utf8_bin'",$conn1);
mysql_query("set character_set_client='utf8'",$conn2);
mysql_query("set character_set_results='utf8'",$conn2);
mysql_query("set collation_connection='utf8_bin'",$conn2);


function buildInsertSql($sTable,$aRow)  {
	$sql='INSERT INTO '.$sTable.' SET ';
	foreach ($aRow as $key => $value) {
		if (!is_null($value)) {
			$value="'".mysql_escape_string($value)."'";
		} else {
			$value='NULL';
		}
		$sql.=' '.$key."=".$value.",";
	}
	return trim($sql,',');
}

function exportTable($sTable) {
	global $conn1;
	global $conn2;
	
	$iAll=0;
	$iExp=0;
		
	$res = mysql_query("SELECT * FROM {$sTable}",$conn1);
	if ($res) {
		while ($row = mysql_fetch_assoc($res)) {
			if (@mysql_query(buildInsertSql($sTable,$row),$conn2)) {
				$iExp++;
			}
		}
		$iAll=mysql_num_rows($res);
		mysql_free_result($res);
	}
	echo "Export {$sTable}: {$iExp} from {$iAll}\n";
}


//пользователи
exportTable('prefix_user');
exportTable('prefix_user_administrator');
exportTable('prefix_user_vote');

//блоги
exportTable('prefix_blog');
exportTable('prefix_blog_user');
exportTable('prefix_blog_vote');

//топики
exportTable('prefix_topic');
exportTable('prefix_topic_vote');
exportTable('prefix_topic_tag');
exportTable('prefix_topic_read');
exportTable('prefix_topic_question_vote');
exportTable('prefix_topic_content');
exportTable('prefix_topic_comment');
exportTable('prefix_topic_comment_vote');
exportTable('prefix_topic_comment_online');

//почта
exportTable('prefix_talk');
exportTable('prefix_talk_comment');
exportTable('prefix_talk_user');

//география
exportTable('prefix_city');
exportTable('prefix_city_user');
exportTable('prefix_country');
exportTable('prefix_country_user');

//остальное
exportTable('prefix_reminder');
exportTable('prefix_page');
exportTable('prefix_invite');
exportTable('prefix_friend');
exportTable('prefix_favourite_topic');

?>
  • avatar
  • ort
  • 30 мая 2010, 22:13
+2
http://idea2.ru/files/feedback/feedback.zip
вот модуль для 0.3.1
Установка:
1. скопировать
2. настроить адрес в конфиге
3. доступ по адресу сайт/feedback

Условие использования:
бесплатно при условии сохранения копирайта.
  • avatar
  • noonv
  • 28 мая 2010, 19:06
+4
было:

<?
class LsUser extends Module {
	
}


class UserEntity_Country extends Entity {    
  
}

class Mapper_User extends Mapper {
	
}



class PluginPage_Page extends Module {
	
}

class PluginPage_PageEntity_Page extends Entity {
	
}

class PluginPage_Mapper_Page extends Mapper {
	
}
?>

стало:

<?
class ModuleUser extends Module {
	
}

class ModuleUser_EntityCountry extends Entity {    
  
}

class ModuleUser_MapperUser extends Mapper {
	
}



class PluginPage_ModulePage extends Module {
	
}

class PluginPage_ModulePage_EntityPage extends Entity {
	
}

class PluginPage_ModulePage_MapperPage extends Mapper {
	
}
?>
  • avatar
  • ort
  • 28 мая 2010, 11:00
+1
Натолкнулся на то же самое под Fedora 12 с memcache 1.4.5.
В общем, дело там в том, что до версии 1.4.0 был необязательный аргумент, указывающий мемкешу сохранить удаляемый объект в кеше после операции удаления таким образом, чтобы новые объекты с тем же именем не могли быть добавлены. Эта опция была полностью удалена в 1.4.0, но сделано это было неправильно, из-за чего выкидывались ошибки при попытке использовать эту опцию. В 1.4.3 это было исправлено, ошибки больше не выбрасывались, но и опция не работала. В 1.4.4 в целях обеспечения обратной совместимости мемкеш стал обрабатывать задание таймаута 0 (немедленное удаление), при котором всё работало так, как надо. Однако, в Zend_cache это было исправлено только 10 марта 2010 года.

Итого, если работает неправильно, то:
в строке 190 файла /classes/lib/external/DklabCache/Zend/Cache/Backend/Memcached.php
return $this->_memcache->delete($id);

меняем на
return $this->_memcache->delete($id, 0);

после чего проблема исчезает.
  • avatar
  • Wizard
  • 05 мая 2010, 00:29
+3
И еда в магазинах, тоже должна быть бесплатной, ведь она нужна всем!
Я придерживаюсь этого правила: «Нету денег — делай сам, есть деньги — пусть делают другие.»
0
Чего вы мучаетесь, есть же pdd.yandex.ru! ;)
  • avatar
  • Dianka
  • 09 апреля 2010, 13:18
0
define('SYS_MAIL_TYPE','smtp');
define('SYS_MAIL_FROM_EMAIL','mydomain.com');
define('SYS_MAIL_FROM_NAME','mydomain.com');
define('SYS_MAIL_CHARSET','UTF-8');
define('SYS_MAIL_SMTP_HOST','tls://smtp.gmail.com');
define('SYS_MAIL_SMTP_PORT','465');
define('SYS_MAIL_SMTP_USER','user@mydomain.com');
define('SYS_MAIL_SMTP_PASSWORD','12345');
define('SYS_MAIL_SMTP_AUTH',true);
define('SYS_MAIL_INCLUDE_COMMENT_TEXT',true);
define('SYS_MAIL_INCLUDE_TALK_TEXT',true);
  • avatar
  • Guf
  • 09 апреля 2010, 11:04
+3
{insert name=`block` block=`tags`}
  • avatar
  • ort
  • 30 марта 2010, 23:04
+1
Выход, собственно, прост. Не нужно отказываться от вики-разметки. Нужно её сделать понятной пользователю, вот и всё.

Приведу пример. Допустим, у вас есть поле для ввода, под ним перечислены непонятные теги, которые можно использовать. Не , а «ссылка на другую страницу» и так далее. Да и все доступные теги перечислять не надо, а только самые частоупотребимые. Посмотрите, как решили этот вопрос вконтакте (простигосподи).

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

Вывод: пользователям минимальные необходимые средства для публикации в руки, остальное делает админ.
+1
Создай в Topic.class.php функцию
public function GetTopicsDiscussion($iPage,$iPerPage,$bAddAccessible=true) {
        $aFilter=array(
            'blog_type' => array(
                'personal',
                'open'
            ),
            'topic_publish' => 1,
            'order' => 'topic_last_comment desc',
        );    
        /**
         * Если пользователь авторизирован, то добавляем в выдачу
         * закрытые блоги в которых он состоит
         */
        if($this->oUserCurrent && $bAddAccessible) {
            $aOpenBlogs = $this->Blog_GetAccessibleBlogsByUser($this->oUserCurrent);
            if(count($aOpenBlogs)) $aFilter['blog_type']['close'] = $aOpenBlogs;            
        }
        
        return $this->GetTopicsByFilter($aFilter,$iPage,$iPerPage);
    }


И вызывай в нужном экшене.
Так же делается для коллективных, персональных блогов.
  • avatar
  • macrulez
  • 15 февраля 2010, 19:12
+2
В принципе эта задача одним запросом решается, если вам это разово сделать нужно, то вот запросы переноса из vBulletin в LS 0.3.1 (под php-nuke переделать, думаю, не сложно будет):

1. Перенос пользователей (ls — база с LS (предполагается свежеустановленный LS без пользователей), vb — база с vBulletin):
INSERT INTO ls.prefix_user (user_login, user_password, user_mail, user_date_register, user_ip_register, user_profile_icq) SELECT username, password, email, passworddate, ipaddress, icq FROM vb.user;

2. Создание персональных блогов новых пользователей:
INSERT INTO ls.prefix_blog (user_owner_id, blog_title, blog_description) SELECT user_id, CONCAT('Блог им. ', user_login), '' FROM ls.prefix_user

Суть такова — делаем insert, указываем нужные поля для переноса, и в качестве данных для insert подставляем результат select запроса из переносимой базы, соответственно поля выборки должны совпадать со вставляемыми в LS.

Возникает проблема с паролями — если принцип хранения разный (например, в исходном движке используется соль, а в LS — нет), то придется пользователей известить о смене пароля. Тут ситуации бывают разные.
  • avatar
  • kks
  • 30 января 2010, 19:29