Насколько ресурсоемкий движок ppkBB3cker ?
Ваше мнение
-
at
- Благодарил (а): 2 раза
Сообщение
Насколько ресурсоемкий движок ppkBB3cker ?
Нет пока не провал ,попробую вариант для яндекса , может подойдет , после отпишусь
-
at
- Благодарил (а): 2 раза
Сообщение
Насколько ресурсоемкий движок ppkBB3cker ?
Почту настроил через smtp для яндекс-почты . Почтовые уведомление работают хорошо
Но вот чего-то не отражаются сообщения в чате , когда нажимает на кнопку отправить . Стиль движка используется prosilver .
В чем может быть причина ?
Но вот чего-то не отражаются сообщения в чате , когда нажимает на кнопку отправить . Стиль движка используется prosilver .
В чем может быть причина ?
-
at
- Благодарил (а): 2 раза
-
at
- Благодарил (а): 2 раза
Сообщение
Насколько ресурсоемкий движок ppkBB3cker ?
Проблему с не появлением текста решена благодаря РРК
Путем добавления части кода в message_user.php .
Добавленный код выделен знаками равенства === :
P.S
Данное решение применительно для тех кто использует PHP + FastCGI и Inginx .
Но появилась другая загвоздка
У какого-нибудь были проблемы с очисткой сообщении в чате ? У меня почему-то не удаляются сообщения из чата в указанное время .
В чем может быть причина ? Я думаю что это может быть связано с несовпадения с записями о таблиц в этом файле и записями таблиц в базе .
Пробовал изменять в message_user.php :
в соответствии с префиксом и записями в таблицах на
Получилось :
http://www.youtube.com/watch?v=3V8tm0gvajY
Для решения данной проблемы , уважаемый РРК , предложил это :
В /chat/message_user.php заменить
на
Но к сожалению, это не помогло. Проблема осталась .
Буду очень признателен если вы мне поможете разобраться с этой проблемой.
Путем добавления части кода в message_user.php .
Добавленный код выделен знаками равенства === :
Код: Выделить всё
<?php
/**
*
* @package ppkBB3cker
* @version $Id: message_user.php 1.000 2008-10-04 11:10:00 PPK $
* @copyright (c) 2008 PPK
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
error_reporting(E_ALL);
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$startsqlcount=0;
function_exists('date_default_timezone_set') ? date_default_timezone_set('Europe/Moscow') : '';
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './../';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
require($phpbb_root_path.'config.'.$phpEx);
if($dbms!='mysql')
{
err('Only mysql supported');
}
$c=@mysql_connect($dbhost, $dbuser, $dbpasswd);
if(!$c)
{
err('Error connecting database: '.mysql_error());
}
$s=@mysql_select_db($dbname, $c);
if(!$s)
{
err('Error selecting database: '.mysql_error($c));
}
define('CONFIG_TABLE', $table_prefix . 'config');
define('SMILIES_TABLE', $table_prefix . 'smilies');
define('PPKCHAT_USERS_TABLE', $table_prefix . 'ppkchat_users');
define('PPKCHAT_MESSAGES_TABLE', $table_prefix . 'ppkchat_messages');
my_sql_query("SET NAMES 'utf8'");
$config=array();
$sql="SELECT config_name, config_value FROM ".CONFIG_TABLE." WHERE config_name IN ('smilies_path', 'script_path') OR config_name LIKE 'ppkbb\_chat%'";
$result=my_sql_query($sql);
while($row=mysql_fetch_row($result))
{
$config[$row[0]]=$row[1];
}
mysql_free_result($result);
$dt = time();
$gmq_gpc = get_magic_quotes_gpc() ? 1 : 0;
$forum_id=my_int_val(@$_GET['f']);
$chat_message=$gmq_gpc ? @$_POST['message'] : mysql_real_escape_string(@$_POST['message'], $c);
$del_message=my_int_val(@$_POST['del_mess']);
$chat_key=$gmq_gpc ? @$_GET['chatkey'] : mysql_real_escape_string(@$_GET['chatkey'], $c);
$lang='ru';
$sql='SELECT * FROM ' .PPKCHAT_USERS_TABLE. "";
$result=my_sql_query($sql);
$users=$chat_user=array();
while($row=mysql_fetch_array($result))
{
if($row['room']==$forum_id)
{
if($row['chatkey']==$chat_key)
{
$chat_user=$row;
}
$users[]=$row;
}
}
mysql_free_result($result);
$message_table=$user_table='';
$timeout=0;
intval($config['ppkbb_chat_murefresh']) > 9 ? '' : $config['ppkbb_chat_murefresh']=10;
if(@$chat_user)
{
list($lang, $rights)=explode('//', $chat_user['rights']);
!$lang ? $lang='ru' : '';
require_once("{$phpbb_root_path}language/$lang/mods/chat.$phpEx");
//0-$is_adm 1-$is_mod 2-$is_canaddchatm 3-$is_canviewchatu
//4-$is_canviewchatm 5-$is_candelchatm 6-$is_canskipchatktime
//7-$is_canhiddeninchat 8-$is_canviewhiddinchat 9-$is_cansendchatpm
//10-$is_canskipdisbutton 11-$is_canusesmilies 12-$is_canusebbcodes
$rights=explode(' ', $rights);
$user_color=$user_rights=array();
$skip_lacheck=0;
if($del_message)
{
if($rights[4] && $rights[5])//is_canviewchatm is_candelchatm
{
$sql='DELETE FROM ' .PPKCHAT_MESSAGES_TABLE. " WHERE id='$del_message' AND user_id={$chat_user['user_id']} LIMIT 1";
$result=my_sql_query($sql);
}
}
else
{
$lastpost=0;
if($chat_message)
{
if($rights[4] && $rights[2])//is_canviewchatm is_canaddchatm
{
if($config['ppkbb_chat_autokill_onpost'] && !$rights[10] && ($dt - $chat_user['lastpost']) < $config['ppkbb_chat_waittime'] - 1)
{
userkick(0);
}
else
{
$chat_message = str_replace('---', '- - -', $chat_message);
$chat_user['username'] = str_replace('---', '- - -', $chat_user['username']);
intval($config['ppkbb_chat_messlength']) ? '' : $config['ppkbb_chat_messlength']=255;
$mbstring=extension_loaded('mbstring') ? 1 : 0;
$chat_message_len=$mbstring ? mbstring_utf8_strlen($chat_message) : utf8_strlen($chat_message);
if($chat_message_len > $config['ppkbb_chat_messlength'])
{
$chat_message=$mbstring ? mbstring_utf8_substr($chat_message, 0, $config['ppkbb_chat_messlength']) : utf8_substr($chat_message, 0, $config['ppkbb_chat_messlength']);
}
$sql='INSERT INTO ' .PPKCHAT_MESSAGES_TABLE. " (message, user_id, to_user, date, rights, room, username, user_color) VALUES ('$chat_message', '{$chat_user['user_id']}', '0', '$dt', '{$chat_user['rights']}', '$forum_id', '{$chat_user['username']}', '{$chat_user['user_color']}')";
$result=my_sql_query($sql);
$lastpost=$dt;
$skip_lacheck=1;
}
}
else
{
userkick(1);
}
}
$sql='UPDATE ' .PPKCHAT_USERS_TABLE. ' SET lastaccess='.($lastpost ? 'lastaccess-'.$config['ppkbb_chat_murefresh'] : "'$dt'").($lastpost ? ", lastpost='$lastpost'" : '')." WHERE chatkey='{$chat_key}' AND room='{$forum_id}'";
$result=my_sql_query($sql);
if($rights[3])//is_canviewchatu
{
/*if($config['ppkbb_chat_autokill_onrefresh'] && !$skip_lacheck && ($dt - $chat_user['lastaccess']) < $config['ppkbb_chat_murefresh'] - 1)
{
userkick(2);
}
else
{*/
$config['script_path']=$config['script_path']!='/' ? $config['script_path'].'/' : '/';
foreach($users as $v)
{
$lcr=explode('//', $v['rights']);
$user_rights[$v['user_id']]=explode(' ', $lcr[1]);
$user_color[$v['user_id']]=$v['user_color'];
if($user_rights[$v['user_id']][7] && !$rights[8])//is_canhiddeninchat is_canviewhiddinchat
{
}
else
{
$v['username']=stripslashes($v['username']);
$v['username'] = str_replace('---', '−−−', $v['username']);
$user_table.= '
<div><a target="new" href="'.$config['script_path'].'memberlist.'.$phpEx.'?mode=viewprofile&u='.$v['user_id'].'">•</a> <a style="font-weight:bold;'.($v['user_color'] ? 'color:#'.$v['user_color'] : '').';" href="javascriptvoid(0);" onClick="javascriptinserttext(\''.$v['username'].': \')">'.($user_rights[$v['user_id']][7] && $rights[8] ? '<i>'.$v['username'].'</i>' : $v['username']).'</a></div>';
}
}
//}
}
else
{
$user_table= '<div><span class="textuser">'.$lang['CHAT_CANT_VIEWCHATU'].'</span></div>';
}
if($rights[4])//is_canviewchatm
{
/*if($config['ppkbb_chat_autokill_onrefresh'] && !$skip_lacheck && ($dt - $chat_user['lastaccess']) < $config['ppkbb_chat_murefresh'] - 1)
{
userkick(3);
}
else
{*/
$smiles=get_chat_smilies();
intval($config['ppkbb_chat_messdisplay']) ? '' : $config['ppkbb_chat_messdisplay']=25;
$sql='SELECT * FROM ' .PPKCHAT_MESSAGES_TABLE. " WHERE room='$forum_id' ORDER BY id DESC LIMIT {$config['ppkbb_chat_messdisplay']}";
$result=my_sql_query($sql);
$last_mess_id=0;
while($row=mysql_fetch_array($result))
{
if(@!$user_rights[$row['user_id']])
{
$lcr=explode('//', $row['rights']);
@$user_rights[$row['user_id']]=explode(' ', $lcr[1]);
}
$row['message']=htmlspecialchars(stripslashes($row['message']));
//$row['message']=wordwrap($row['message'], 32, '<wbr>', 1);
$row['message'] = str_replace('---', '−−−', $row['message']);
if($config['ppkbb_chat_timecorrect'])
{
if(strpos($config['ppkbb_chat_timecorrect'], '-')===true)
{
$row['date']=$row['date'] - intval($config['ppkbb_chat_timecorrect']);
}
else
{
$row['date']=$row['date'] + intval($config['ppkbb_chat_timecorrect']);
}
}
if(@$user_rights[$row['user_id']][11] && $rights[11])
{
$row['message']=chat_smilies($row['message'], $smiles['match'], $smiles['replace'], $config['ppkbb_chat_maxsmiles']);
}
$message_table.= '
<div style="width:100%;" id="p'.$row['id'].'">'.date('H:i:s', $row['date']).' <b style="'.(@$user_color[$row['user_id']] ? 'color:#'.$user_color[$row['user_id']] : '').';">'.$row['username'].'</b> '.(@$rights[5] && $row['user_id']==$chat_user['user_id'] ? '<a href="javascriptvoid('.$row['id'].')" title="'.$lang['CHAT_DELMESS'].'" onclick="delete_post(\''.$row['id'].'\')">[x]</a> ' : '').$row['message'].'</div>';
$last_mess_id=$row['id'];
}
mysql_free_result($result);
$config['ppkbb_chat_marchive'] ? $config['ppkbb_chat_messdisplay']+=$config['ppkbb_chat_marchive'] : '';
if( ($dt - $config['ppkbb_chat_last_cleanup']) > $config['ppkbb_chat_cleanup_interval'] && ($last_mess_id - $config['ppkbb_chat_messdisplay']) > 0)
{
$sql='DELETE FROM ' .PPKCHAT_MESSAGES_TABLE. " WHERE room='$forum_id' AND id < '$last_mess_id'";
$result=my_sql_query($sql);
$sql='UPDATE ' .CONFIG_TABLE. " SET config_value='$dt' WHERE config_name='ppkbb_chat_last_cleanup'";
$result=my_sql_query($sql);
}
//}
}
else
{
$message_table= '<div><span class="textmess">'.$lang['CHAT_CANT_VIEWCHATM'].'</span></div>';
}
}
if(!$rights[6] && $dt - @$chat_user['lastpost'] > $config['ppkbb_chat_killtime'])
{
userkick(4);
}
}
else
{
require_once("{$phpbb_root_path}language/$lang/mods/chat.$phpEx");
$config['ppkbb_chat_murefresh']=3600;
$user_table= '';
$message_table= '<table width="100%" cellpadding="0" cellspacing="1" border="0">';
$message_table.= '
<tr valign="top">
<td>
<span class="textmess">'.$lang['CHAT_LOGIN'].'</span>
</td>
</tr>';
$message_table.= '</table>';
}
echo "$message_table---1---$user_table---3---".($config['ppkbb_chat_murefresh']*1000)."---$timeout";
if($c)
{
mysql_close($c);
}
$mtime = explode(' ', microtime());
$totaltime = $mtime[0] + $mtime[1] - $starttime;
exit();
//############################################################
function get_chat_smilies()
{
global $config;
static $match;
static $replace;
// See if the static arrays have already been filled on an earlier invocation
if (!is_array($match))
{
$match = $replace = array();
$smiles=array();
$sql = 'SELECT *
FROM ' . SMILIES_TABLE . '
ORDER BY LENGTH(code) DESC';
$result = my_sql_query($sql);
while($row=mysql_fetch_array($result))
{
if (empty($row['code']))
{
continue;
}
// (assertion)
$smiles['match'][] = '(?<=^|[\n .])' . preg_quote($row['code'], '#') . '(?![^<>]*>)';
$smiles['replace'][] = '<img src="./'.$config['smilies_path'].'/' . $row['smiley_url'] . '" alt="' . $row['code'] . '" title="' . $row['emotion'] . '" />';
}
mysql_free_result($result);
}
return $smiles;
}
function chat_smilies($text, $match, $replace, $max_smilies = 0)
{
if (sizeof($match))
{
if ($max_smilies)
{
$num_matches = preg_match_all('#' . implode('|', $match) . '#', $text, $matches);
unset($matches);
if ($num_matches !== false && $num_matches > $max_smilies)
{
return $text;
}
}
// Make sure the delimiter # is added in front and at the end of every element within $match
$text = trim(preg_replace(explode(chr(0), '#' . implode('#' . chr(0) . '#', $match) . '#'), $replace, $text));
}
return $text;
}
function my_sql_query($query)
{
global $startsqlcount, $c;
$startsqlcount+=1;
$result=@mysql_query($query, $c);
if(!$result)
{
err('Unknown Error');
}
return $result;
}
//From includes/utf/utf_tools.php
function mbstring_utf8_substr($str, $offset, $length = null)
{
if (is_null($length))
{
return mb_substr($str, $offset);
}
else
{
return mb_substr($str, $offset, $length);
}
}
//From includes/utf/utf_tools.php
function mbstring_utf8_strlen($text)
{
return mb_strlen($text, 'utf-8');
}
//From includes/utf/utf_tools.php
function utf8_substr($str, $offset, $length = NULL)
{
// generates E_NOTICE
// for PHP4 objects, but not PHP5 objects
$str = (string) $str;
$offset = (int) $offset;
if (!is_null($length))
{
$length = (int) $length;
}
// handle trivial cases
if ($length === 0 || ($offset < 0 && $length < 0 && $length < $offset))
{
return '';
}
// normalise negative offsets (we could use a tail
// anchored pattern, but they are horribly slow!)
if ($offset < 0)
{
// see notes
$strlen = utf8_strlen($str);
$offset = $strlen + $offset;
if ($offset < 0)
{
$offset = 0;
}
}
$op = '';
$lp = '';
// establish a pattern for offset, a
// non-captured group equal in length to offset
if ($offset > 0)
{
$ox = (int) ($offset / 65535);
$oy = $offset % 65535;
if ($ox)
{
$op = '(?:.{65535}){' . $ox . '}';
}
$op = '^(?:' . $op . '.{' . $oy . '})';
}
else
{
// offset == 0; just anchor the pattern
$op = '^';
}
// establish a pattern for length
if (is_null($length))
{
// the rest of the string
$lp = '(.*)$';
}
else
{
if (!isset($strlen))
{
// see notes
$strlen = utf8_strlen($str);
}
// another trivial case
if ($offset > $strlen)
{
return '';
}
if ($length > 0)
{
// reduce any length that would
// go passed the end of the string
$length = min($strlen - $offset, $length);
$lx = (int) ($length / 65535);
$ly = $length % 65535;
// negative length requires a captured group
// of length characters
if ($lx)
{
$lp = '(?:.{65535}){' . $lx . '}';
}
$lp = '(' . $lp . '.{'. $ly . '})';
}
else if ($length < 0)
{
if ($length < ($offset - $strlen))
{
return '';
}
$lx = (int)((-$length) / 65535);
$ly = (-$length) % 65535;
// negative length requires ... capture everything
// except a group of -length characters
// anchored at the tail-end of the string
if ($lx)
{
$lp = '(?:.{65535}){' . $lx . '}';
}
$lp = '(.*)(?:' . $lp . '.{' . $ly . '})$';
}
}
if (!preg_match('#' . $op . $lp . '#us', $str, $match))
{
return '';
}
return $match[1];
}
//From includes/utf/utf_tools.php
function utf8_strlen($text)
{
// Since utf8_decode is replacing multibyte characters to ? strlen works fine
return strlen(utf8_decode($text));
}
================================================================================
/**
* Implementation of PHP's native utf8_decode for people without XML support
*
* @param string $str UTF-8 encoded data
* @return string ISO-8859-1 encoded data
*/
function utf8_decode($str)
{
$pos = 0;
$len = strlen($str);
$ret = '';
while ($pos < $len)
{
$ord = ord($str[$pos]) & 0xF0;
if ($ord === 0xC0 || $ord === 0xD0)
{
$charval = ((ord($str[$pos]) & 0x1F) << 6) | (ord($str[$pos + 1]) & 0x3F);
$pos += 2;
$ret .= (($charval < 256) ? chr($charval) : '?');
}
else if ($ord === 0xE0)
{
$ret .= '?';
$pos += 3;
}
else if ($ord === 0xF0)
{
$ret .= '?';
$pos += 4;
}
else
{
$ret .= $str[$pos];
++$pos;
}
}
return $ret;
}
function err($str)
{
global $c;
echo $str;
if($c)
{
mysql_close($c);
}
exit();
}
==================================================================================
function userkick($n=0)
{
global $lang;
$message_table='['.intval($n).'] '.$lang['CHAT_LA_CHECK'];
$user_table='';
err("$message_table---1---$user_table---3---3600000---1");
}
function my_int_val($v=0)
{
if(!$v || $v < 0)
{
return 0;
}
return @number_format($v+0, 0, '', '');
}
?>
Данное решение применительно для тех кто использует PHP + FastCGI и Inginx .
Но появилась другая загвоздка
У какого-нибудь были проблемы с очисткой сообщении в чате ? У меня почему-то не удаляются сообщения из чата в указанное время .
В чем может быть причина ? Я думаю что это может быть связано с несовпадения с записями о таблиц в этом файле и записями таблиц в базе .
Пробовал изменять в message_user.php :
Код: Выделить всё
define('CONFIG_TABLE', $table_prefix . 'config');
define('SMILIES_TABLE', $table_prefix . 'smilies');
define('PPKCHAT_USERS_TABLE', $table_prefix . 'ppkchat_users');
define('PPKCHAT_MESSAGES_TABLE', $table_prefix . 'ppkchat_messages');
Код: Выделить всё
define('CONFIG_TABLE', $table_prefix . 'users_config');
define('SMILIES_TABLE', $table_prefix . 'users_smilies');
define('PPKCHAT_USERS_TABLE', $table_prefix . 'users_ppkchat_users');
define('PPKCHAT_MESSAGES_TABLE', $table_prefix . 'users_ppkchat_messages');
http://www.youtube.com/watch?v=3V8tm0gvajY
Для решения данной проблемы , уважаемый РРК , предложил это :
В /chat/message_user.php заменить
Код: Выделить всё
$config['ppkbb_chat_marchive'] ? $config['ppkbb_chat_messdisplay']+=$config['ppkbb_chat_marchive'] : '';
Код: Выделить всё
//$config['ppkbb_chat_marchive'] ? $config['ppkbb_chat_messdisplay']+=$config['ppkbb_chat_marchive'] : '';
Буду очень признателен если вы мне поможете разобраться с этой проблемой.
-
at
- Благодарил (а): 2 раза
Сообщение
Насколько ресурсоемкий движок ppkBB3cker ?
Опечатался я в слове Inginx , правильно Nginxatom_trek писал(а):P.S
Данное решение применительно для тех кто использует PHP + FastCGI и Inginx .
-
at
- Благодарил (а): 2 раза
Сообщение
Насколько ресурсоемкий движок ppkBB3cker ?
Еще одна опечатка в указанное время , имеется ввиду не время, а интервалatom_trek писал(а): У меня почему-то не удаляются сообщения из чата в указанное время .
Вернуться в «Вопросы, ответы и примеры решений»