Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.09.2013, 19:46   #11
skillful
Новичок
Джуниор
 
Регистрация: 31.08.2013
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Логика кривая какая-то...
Если один пользователь начнет отправлять сообщения другому пользователю – допустим, по одному сообщению каждые 10-13 минут (т.е. в промежутках менее оговоренных 15 минут) – то по этой логике email получателю о новых сообщениях не будет отправлен никогда, точнее уведомление по email будет отправлено фиг знает когда (собственно, когда отправитель перестанет отправлять ему новые сообщения – а это может наступить и не скоро).
Какой тогда толк от такой системы оповещения?
Нормальная логика. Мне так и нужно. Сомневаюсь, что пользователь написавший сообщение(я) через 10-13 минут вспомнил, что не дописал и опять написал, а потом еще через 10-13 минут опять вспомнил, что опять чего-то не дописал и опять написал. С вами такое было? Возможно я ошибаюсь но на таком принципе сделана система оповещений в контакте.
skillful вне форума Ответить с цитированием
Старый 01.09.2013, 20:10   #12
Vladiger
Пользователь
 
Регистрация: 31.08.2013
Сообщений: 93
По умолчанию

Цитата:
С вами такое было?
А с Вами было такое, что бы Вы отправляли пользователю 5 сообщений в течении 10 секунд?
Такое возможно разве что в чатах...

Собственно логика не бывает "кривой" или "странной". Логика она либо есть, либо её нет. И в данном вопросе логика присутствует у всех. Теоретически возможны как флуд-атака (частые сообщения), так и наоборот сообщения с указанным интервалом. Но это только теоретически. Это что то из области "давайте повредничаем и поглумимся над системой"!

На практике же, сколько я знаю он-лайн сервисов, нигде такой системы не наблюдал. Как правило пользователи оповещаются именно своевременно, т.е. по мере получения нового сообщения и не зависимо от того сколько их. Пользователь должен быть уведомлен о каждом из них, а уж читать или не читать эти сообщения - это его заботы, не ваши!

Что бы избежать флуд-атаки, нужно копать в другом направлении. Нужно запретить оправку сообщений тому пользователю, который их пишет (отправителю), а не получателю. То есть, написал сообщение, покури 15 минут до следующего, как раз будет время обдумать что забыл написать!
Vladiger вне форума Ответить с цитированием
Старый 01.09.2013, 20:39   #13
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

видел на некоторых системах покупки-продажи ссылок... там в настройках прямо задаешь 1 раз в 3 - 6 - 12 часов получать сообщения о событиях.... иначе например завалить может.... а так одно сообщение что есть новые оповещения = заходишь а там их 100 50 )))
ADSoft вне форума Ответить с цитированием
Старый 01.09.2013, 20:43   #14
skillful
Новичок
Джуниор
 
Регистрация: 31.08.2013
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Vladiger Посмотреть сообщение
А с Вами было такое, что бы Вы отправляли пользователю 5 сообщений в течении 10 секунд?
Такое возможно разве что в чатах...
Еще раз повторяю. Система основана на диалогах, а значит по принципу чата. Уже второй пытается сказать, что моя задумка не верна, но мне реально нужно сделать так как описано выше. Я знаю это не легко, поэтому и говорю, что заплачу в разумных пределах.
skillful вне форума Ответить с цитированием
Старый 02.09.2013, 15:10   #15
skillful
Новичок
Джуниор
 
Регистрация: 31.08.2013
Сообщений: 9
По умолчанию

Вообщем попробовал перегруппировать массив, он получился такой
PHP код:
Array
(
    [
13] => Array //Отправитель
        
(
            [
2] => Array //Получатель
                
(
                    [
0] => Array
                        (
                            [
id] => 1986
                            
[sender_id] => 13
                            
[receiver_id] => 2
                            
[date] => 1378061256
                        
)

                    [
1] => Array
                        (
                            [
id] => 1962
                            
[sender_id] => 13
                            
[receiver_id] => 2
                            
[date] => 1378044203
                        
)

                    [
2] => Array
                        (
                            [
id] => 1956
                            
[sender_id] => 13
                            
[receiver_id] => 2
                            
[date] => 1377720481
                        
)

                    [
3] => Array
                        (
                            [
id] => 1954
                            
[sender_id] => 13
                            
[receiver_id] => 2
                            
[date] => 1377720465
                        
)

                    [
4] => Array
                        (
                            [
id] => 1952
                            
[sender_id] => 13
                            
[receiver_id] => 2
                            
[date] => 1377718346
                        
)

                )

        )

Теперь как-то надо задать условие, что если $value2[0]['date'] > (time() - 900), то очищался массив получателя. Пробывал так:
PHP код:
foreach ($new as $key=>$value) {

    foreach (
$value as $key2=>$value2) {

        if(
$value2[0]['date'] > (time() - 900) ) 
        {
             unset(
'Какая то переменная');
            
        }
    }

Не выходит...
skillful вне форума Ответить с цитированием
Старый 02.09.2013, 15:58   #16
skillful
Новичок
Джуниор
 
Регистрация: 31.08.2013
Сообщений: 9
По умолчанию

Вот так оказывается unset($new[$key][$key2]);
И последний вопрос. Чтобы нормально отправить письмо нужно знать емаил получателя и имя отправителя. Для этого нужно еще сделать запрос LEFT JOINом к таблице пользователей. LEFT JOINом нужно добавить 2 запроса (один к отправителю второй получателю) или достаточно одного и к отправителю и к получателю одновременно? Как правильно и лучше?
skillful вне форума Ответить с цитированием
Старый 06.09.2013, 10:45   #17
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
По умолчанию

Цитата:
Сообщение от skillful Посмотреть сообщение
Есть вот такой вот массив

PHP код:
Array
(
    [
0] => Array
        (
            [
id] => 1960
            
[sender_id] => 2
            
[receiver_id] => 12
            
[date] => 1377720574
            
[read_at] => 0
            
[body] => пара
            
[status] => noread
            
[folder] => outbox
            
[email] => 0
            
[params] => 
            [
uid] => 2
        
)

    [
1] => Array
        (
            [
id] => 1958
            
[sender_id] => 2
            
[receiver_id] => 12
            
[date] => 1377720547
            
[read_at] => 0
            
[body] => кепуе
            
[status] => noread
            
[folder] => outbox
            
[email] => 0
            
[params] => 
            [
uid] => 2
        
)

    [
2] => Array
        (
            [
id] => 1956
            
[sender_id] => 13
            
[receiver_id] => 2
            
[date] => 1377720481
            
[read_at] => 0
            
[body] => ваыва
            
[status] => read
            
[folder] => outbox
            
[email] => 0
            
[params] => 
            [
uid] => 13
        
)

    [
3] => Array
        (
            [
id] => 1954
            
[sender_id] => 13
            
[receiver_id] => 2
            
[date] => 1377720465
            
[read_at] => 0
            
[body] => павпа
            
[status] => read
            
[folder] => outbox
            
[email] => 0
            
[params] => 
            [
uid] => 13
        
)

    [
4] => Array
        (
            [
id] => 1952
            
[sender_id] => 13
            
[receiver_id] => 2
            
[date] => 1377718346
            
[read_at] => 0
            
[body] => оьрроь
            
[status] => read
            
[folder] => outbox
            
[email] => 0
            
[params] => 
            [
uid] => 13
        
)

    [
5] => Array
        (
            [
id] => 1950
            
[sender_id] => 2
            
[receiver_id] => 13
            
[date] => 1377717724
            
[read_at] => 0
            
[body] => sad
            
[status] => read
            
[folder] => outbox
            
[email] => 0
            
[params] => 
            [
uid] => 2
        
)

Где:
receiver_id - это отправитель сообщения

Нужно как-то сформировать другой массив из всех отправителей..
При чем, что-бы этот массив срабатывал тогда когда date последнего сообщения была меньше текущего времени на 900 сек.

Оплачу код в пределах разумного по карте Visa
Если массив не очень большой, можно пробежаться по массиву и переписать в другой массив данные, которые будут подходить по том или ином параметре.
Например:

Имеем ваш массив mas1, писать новые данные буем в mas2
Код:
$j=0;
for ($i=0; $i<count(mas1);$i++){
    if ( $mas1[$i]['date'] == 'нужная дата' ){
         mas2[$j]=mas1[$i];
    }
}
if ( $mas1[$i]['date'] == 'нужная дата' ) - вот это условие можно сформировать под ваши конкретные нужды.
В итоге будем иметь в mas2 - данные, которые будут подходить по теми или иным параметрам по дате.

Это если я правильно понял.
Небесный вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переделка линукса snakes Компьютерное железо 10 28.05.2013 18:10
переделка ПО modob1 Софт 0 20.02.2012 19:03
Переделка Flammed Visual C++ 0 14.05.2011 13:16
Переделка шаблонов ! ! ! Fanat31 WordPress и другие CMS 2 22.01.2011 12:42
Переделка кода hen Общие вопросы C/C++ 6 24.10.2009 17:58