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

MantisBT forum for users who prefer to ask and answer questions in Russian.

Moderators: Developer, Contributor

Post Reply
ATOROPOV
Posts: 2
Joined: 30 Oct 2012, 10:15

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

Post by ATOROPOV »

Всем привет!
Суть проблемы такова.
Хостинг, на котором у меня размещён мантис, начал предъявлять претензии в связи с тем, что скрипты в одну секунду отправляют больше одного сообщения (следящим пользователям при изменениях в запросах). Так и есть, вопрос, как возможно это поправить, поставив задержку хотя бы в секунду
Гугл показал лишь на функцию usleep(300000); поможет ли это, и в какой файл и место её нужно вставить. Просьба помочь...
Заранее благодарен!
Kirill
Posts: 638
Joined: 25 Nov 2007, 08:05
Location: Kaliningrad, RF
Contact:

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

Post 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);
    }
}
 
ATOROPOV
Posts: 2
Joined: 30 Oct 2012, 10:15

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

Post by ATOROPOV »

Спасибо, это помогло!
Вот ещё как помогло, можно так же в core/email_queue_api.php в конце функции function email_queue_delete просто вставить usleep(1000000);
Kirill
Posts: 638
Joined: 25 Nov 2007, 08:05
Location: Kaliningrad, RF
Contact:

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

Post by Kirill »

Лучше разместить задачу в Багтрекере. Не уверен, что ее сделают, но попытаться можно. В коде они ее точно не вставят, т.к. тогда сайт будет тормозить при посещении сайта, отправляя каждую секунду письмо, а вот в этот код они могу внести изменения, т.к. он выполняется только на сервере через крон.
Post Reply