Модуль инвайт+ реферальная ссылка

#1 29 августа 2012 в 01:23
Здравствуйте! Нужна помощь! Мне сделали модуль, а когда пользователи им пользуются, а кокретно я возникает очень сильная нагрузка на сайт. Можете посмотреть:

<?php

$lastemail="";



function mod_myinvite($module_id){
$inCore = cmsCore::getInstance();
$inDB = cmsDatabase::getInstance();
$inUser = cmsUser::getInstance();
$inConf = cmsConfig::getInstance();


$nickname = $inUser->nickname;
$mylogin = $inUser->login;
$usar = $inUser->id;


$invite = $inDB->get_fields('cms_user_invites', "owner_id='{$usar}' AND is_used = 0 AND is_sended=0", '*');
$invite_count = $inDB->rows_count('cms_user_invites', "owner_id='{$usar}' AND is_used = 0 AND is_sended = 0");



$errors = '';
$success = '';


if ($inUser->id){

echo'
<big>Пригласить нового пользователя</big>
<p style="font-size:13px;">Вы можете отправить '.$invite_count.' приглашений:
<form action="" method="post" name="postfriend">
<lable>Введите EMAIL: </label><input type="text" name="frendmail" value="">
<input type="submit" name="postfriend" value="Отправить">
</form>
</p>
';
$newinvite=$invite['code'];
$mailtext=file_get_contents('http://сайт/includes/letters/myinvite.txt');

$mailtext=str_replace('{nickname}', $nickname, $mailtext);
$mailtext=str_replace('{usar}', $usar, $mailtext);
$mailtext=str_replace('{newinvite}', $newinvite, $mailtext);
$pageURL = $_SERVER['HTTPS'] == 'on'? 'https://': 'http://';
$pageURL .= $_SERVER['SERVER_PORT'] != '80'? $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]: $_SERVER['SERVER_NAME']. $_SERVER['REQUEST_URI'];
if ($_POST['postfriend'])
{
//$message='http://сайт/registration?r'.$usar;
$subject='Социальная сеть сайт — Вы получили приглашение от '.$nickname;
$headers = 'From: invite@сайт'. "\r\n" .
'Reply-To: administrator@сайт'. "\r\n" .
'X-Mailer: PHP/'. phpversion();

$to=$_POST['frendmail'];
$tc=NULL;
if (strpos($to, "@")) $tc=1;
if (($to!=NULL)&&($tc!=NULL)) {
$email=$to;
mail($email, $subject, $mailtext, $headers); echo('<font color="green"><b>Приглашение отправлено успешно. Через 2 секунды Вы будете перенаправлены!</b></font>');
$inDB->query("UPDATE cms_user_invites SET is_sended=1 WHERE id='{$invite['id']}'");
print '<script language="JavaScript" type="text/javascript">
<!--
location="http://сайт/users/'.$mylogin.'"
//-->
</script>';
}
else echo ('<font color="red">Ошибка. Неверно заполнены поля
</font>');
if ($tc!=TRUE) echo ('<font color="red">Неверно заполнен EMAIL</font>');
}

} return true;
}


?>
#3 29 августа 2012 в 03:10
модуль в личку, если не секретно, там и поглядим. ;)
#4 29 августа 2012 в 14:39
Предлагаю готовое решение — Компонент "Реферальная система"
#5 29 августа 2012 в 16:34
вот что мне на хостинге отписали:

HTTP запросы
46.201.190.47 www.сайт.com GET /modules/mod_whoonline_ajax/update.php?module_id=180 HTTP/1
176.8.194.123 www.сайт.com GET /modules/mod_whoonline_ajax/update.php?module_id=180 HTTP/1


SQL запросы.
# Query_time: 29.669597 Lock_time: 0.000093 Rows_sent: 0 Rows_examined: 278742
use логин базы данных;
SET timestamp=1345504218;
SELECT * FROM cms_user_invites WHERE owner_id='0' AND is_used = 0 AND is_sended=0 ORDER BY id ASC LIMIT 1;



# Query_time: 33.721758 Lock_time: 0.000105 Rows_sent: 6 Rows_examined: 88
use логин базы данных;
SET timestamp=1346195392;
SELECT distinct
o.user_id as id,
u.login,
u.nickname,
p.gender as gender,
g.is_admin as is_admin,
(IF(c.id,1,0)) as userIsEditor
FROM cms_online o
LEFT JOIN cms_users u ON u.id = o.user_id
LEFT JOIN cms_user_profiles p ON p.user_id = u.id
LEFT JOIN cms_user_groups g ON g.id = u.group_id
LEFT JOIN cms_category c ON c.modgrp_id = g.id
WHERE u.is_locked = 0 AND u.is_deleted = 0
GROUP BY o.user_id;

# Query_time: 11.999945 Lock_time: 0.000076 Rows_sent: 0 Rows_examined: 11
SET timestamp=1346197176;
DELETE FROM cms_online WHERE lastdate <= DATE_SUB(NOW(), INTERVAL 3 MINUTE);
#7 29 августа 2012 в 17:20

Предлагаю готовое решение — Компонент "Реферальная система"

Vimars
Есть и у меня в блоге, но бесплатная)
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.