Почтовый Поиск MX проверки

Во-первых, вы должны понимать, что загрузка процессора всегда является средней за определенное время. В любой момент времени процессор либо работает, либо нет. Процессор никогда не работает на 40%.

Тем не менее, мы можем смоделировать нагрузку 40% в течение, скажем, секунды, если процессор будет работать в течение 0,4 секунды и в режиме сна 0,6 секунды. Это дает среднее использование в 40% за эту секунду.

Сокращение его до менее чем одной секунды, скажем, 100 миллисекундные куски должны дать еще более стабильное использование.

Следующий метод использует аргумент, который является желаемым использованием, а затем использует один процессор / ядро ​​до такой степени:

public static void ConsumeCPU(int percentage)
{
    if (percentage < 0 || percentage > 100)
        throw new ArgumentException("percentage");
    Stopwatch watch = new Stopwatch();
    watch.Start();            
    while (true)
    {
        // Make the loop go on for "percentage" milliseconds then sleep the 
        // remaining percentage milliseconds. So 40% utilization means work 40ms and sleep 60ms
        if (watch.ElapsedMilliseconds > percentage)
        {
            Thread.Sleep(100 - percentage);
            watch.Reset();
            watch.Start();
        }
    }
}

Я использую здесь секундомер , потому что он является более точным, чем свойство TickCount , но вы также можете использовать это и использовать вычитание, чтобы проверить, достаточно ли долго вы работаете.

Следует иметь в виду две вещи:

  • в многоядерных системах вам придется создавать один поток для каждого ядра. В противном случае вы увидите, что задействуется только один процессор / ядро, дающее примерно «процентное соотношение / количество ядер».
  • Тема. Сон не очень точный. Это никогда не будет гарантировать точное время с точностью до миллисекунды, поэтому вы увидите некоторые изменения в своих результатах

Чтобы ответить на ваш второй вопрос об изменении использования через определенное время, я предлагаю вам запустить этот метод на одном или более потоков (в зависимости от количества ядер), а затем, когда вы хотите изменить использование, вы просто останавливаете эти потоки и порождаете новые с новыми процентными значениями. Таким образом, вам не нужно реализовывать связь между потоками, чтобы изменить percentage работающего потока.

9
задан Paul 3 November 2009 в 11:43
поделиться

2 ответа

are there any edge cases where a valid email address could fail an MX lookup check?

Yes, in that where there is no MX record, MTAs fall back to using the A record instead. So only allowing MX records would fail a class of mail servers that work in the real world.

Allowing any name with an MX or A record at least detects obvious mistypings that result in NXDOMAIN. However it will still allow mistypings that end up at squatter sites. A further step for addresses resolved by A records might be to check where port 25 is accepting connections on that address.

7
ответ дан 4 December 2019 в 21:50
поделиться

Вы можете только проверить, есть ли почтовый сервер, зарегистрированный для домена.

Если сервер также принимает почту и действителен ли адрес (не синтаксически, а в том смысле, что существует почтовый ящик для него и так далее ...) вы узнаете только при отправке, например, регистрационного электронного письма

образца о том, как это сделать в PHP

function mailserver_exists($email) {
 list($user,$domain) = split('@',$email);
 //included check for 'A' after [comment from bobince][1]
 return checkdnsrr($domain,'MX') || checkdnsrr($domain,'A');
}
if(domain_exists('joe@foreigndomain.xx')) {...} else {...}

. Да, вы можете использовать ' TinyTim@192.184.165.13 ' тоже. В документации PHP для checkdnsrr (host, type) указано, что

host может быть IP-адресом в Нотация с четырьмя точками или имя хоста

2
ответ дан 4 December 2019 в 21:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: