Page 1 of 1

Установка лимита между отправками сообщений в Mantis

Posted: 30 Oct 2012, 10:23
by ATOROPOV
Всем привет!
Суть проблемы такова.
Хостинг, на котором у меня размещён мантис, начал предъявлять претензии в связи с тем, что скрипты в одну секунду отправляют больше одного сообщения (следящим пользователям при изменениях в запросах). Так и есть, вопрос, как возможно это поправить, поставив задержку хотя бы в секунду
Гугл показал лишь на функцию usleep(300000); поможет ли это, и в какой файл и место её нужно вставить. Просьба помочь...
Заранее благодарен!

Re: Установка лимита между отправками сообщений в Mantis

Posted: 10 Nov 2012, 05:25
by Kirill
Попробуйте заменить эту функцию у себя в файле core/email_api.php (только сделайте backup)

Code: Select all

function email_send_all($p_delete_on_failure = false) {
    $t_ids = email_queue_get_ids();

    $t_emails_recipients_failed = array();
    log_event( LOG_EMAIL, "Processing " . count( $t_ids ) . " queued messages" );
    foreach( $t_ids as $t_id ) {
            $t_start = microtime(true);
        $t_email_data = email_queue_get( $t_id );
        log_event( LOG_EMAIL,
            "Sending message #$t_id queued on " .
            date( config_get( 'complete_date_format' ), $t_email_data->submitted )
        );

        # check if email was not found.  This can happen if another request picks up the email first and sends it.
        if( $t_email_data === false ) {
            continue;
        }

        # if unable to place the email in the email server queue, then the connection to the server is down,
        # and hence no point to continue trying with the rest of the emails.
        if( !email_send( $t_email_data ) ) {
            if ($p_delete_on_failure) {
                email_queue_delete( $t_email_data->email_id );
            }
            if( microtime(true) - $t_start > 5 ) {
                break;
            } else {
                continue;
            }
        }
        usleep(1000000); //или sleep(1);
    }
}
 

Re: Установка лимита между отправками сообщений в Mantis

Posted: 15 Nov 2012, 11:53
by ATOROPOV
Спасибо, это помогло!
Вот ещё как помогло, можно так же в core/email_queue_api.php в конце функции function email_queue_delete просто вставить usleep(1000000);

Re: Установка лимита между отправками сообщений в Mantis

Posted: 16 Nov 2012, 16:49
by Kirill
Лучше разместить задачу в Багтрекере. Не уверен, что ее сделают, но попытаться можно. В коде они ее точно не вставят, т.к. тогда сайт будет тормозить при посещении сайта, отправляя каждую секунду письмо, а вот в этот код они могу внести изменения, т.к. он выполняется только на сервере через крон.