(я предполагаю, что вы действительно имеете в виду ADDR_SPEC, когда говорите об адресах электронной почты)
, но это будет очень медленно по сравнению с циклическим курсором на mysql
Нет, не совсем.Единственное отличие состоит в том, что в зависимости от того, как вы реализуете этот подход PHP, требует, чтобы вы извлекли весь набор результатов, прежде чем начать итерацию по нему.Однако разбить это на меньшие наборы результатов тривиально.
Кроме того, ограничение производительности вашего алгоритма - скорость поиска DNS - и это все о задержке - если ваша цель состоит в том, чтобы сделать это быстрее, товы должны выполнять несколько запросов параллельно.
Следующее, что вы должны учитывать, - это то, что вы, вероятно, получили несколько почтовых ящиков для каждого MX, например, user1@gmail.com, user2@gmail.com ....Хотя, если вы правильно настроили DNS-кэширование, будет меньше затрат, чем каждый раз, когда вы будете обращаться к источнику, если вы работаете с очень большим набором данных или будете делать это более одного раза, это имеет гораздо больший смыслпросто работайте с уникальными значениями хоста MX, например,
SELECT DISTINCT SUBSTR(addr_spec FROM LOCATE('@', addr_spec)) AS mx2chk
FROM yourtable
WHERE addr_spec LIKE '%@%'
AND (email_checked IS NULL
OR email_checked<NOW() - INTERVAL 300 DAY )
;
Действительно, если вы помечаете данные, вы можете использовать собственную базу данных для проверки MX.
с помощью команды digиз терминала / оболочки
Пожалуйста, не говорите мне, что вы запускаете оболочку из процесса управления PHP для поиска DNS?