Отладка функции php imap_open — возможная ошибка сети

ФОН: Я просто перенес свой проект на другой сервер (совместно используемый DigitalOcean, самое дешевое предложение) с CentOS и заметил, что функции imap в PHP на новом сервере занимают больше места, чем на старом (например, в 10 раз больше).

Старый сервер является выделенным сервером, и почтовый сервер также размещается на старом сервере, на котором я пытаюсь выполнить действия imap.

ВАЖНЫЙ: Я не думаю, что это замедление связано с тем, что мы больше не пытаемся подключиться с одного и того же физического сервера к почтовому серверу из-за значительного увеличения времени, необходимого для запуска любой функции imap в моем проекте, но не для всех может доказать, что я не прав, потому что, к сожалению, я ничего не знаю о сетях 🙁

Я сделал несколько простых тестов времени выполнения скриптов на обоих серверах, создав два php-файла и протестировав время выполнения обоих: один с использованием только функций php imap (imap_open), а другой — с пакетом PEAR Net_IMAP. Вот два сценария:

СЦЕНАРИЙ 1:

$start=microtime(true);
$temp=$start;
$mbox = imap_open ("{mymailserver:143/novalidate-cert}INBOX", "[email protected]", "password");
telltime($start, "Connect and Login", $temp);
$mbox = imap_reopen ($mbox,"{mymailserver:143/novalidate-cert}INBOX.Sent");
telltime($start, "Changefolder", $temp);
telltime($start, "End script");

СЦЕНАРИЙ 2:

require_once 'Net/IMAP.php';
$imapServer = new Net_IMAP('mymailserver', 143);
telltime($start, "Connect", $temp);
$loggedIn = $imapServer->login('[email protected]' , 'password');
telltime($start, "Login", $temp);
$imapServer->selectMailbox("INBOX.Sent");
telltime($start, "Change folder", $temp);
telltime($start, "End script");

Я запустил эти сценарии следующим образом, со следующими результатами:

СЦЕНАРИЙ 1 КАК ЕСТЬ — старый сервер

Подключение и логин: 0.124350070953

Папка изменений: 0,00585293769836

Все время: 0.130313158035

СЦЕНАРИЙ 1 КАК ЕСТЬ — новый сервер

Подключение и логин: 0.63277888298035

Папка изменений: 0.15838479995728

Все время: 0.79174709320068

СЦЕНАРИЙ 1 / novalidate-cert изменен на / notls — старый сервер

Подключиться и войти: 0.112071990967
Папка изменений: 0.00407910346985

Все время: 0.116246938705

СЦЕНАРИЙ 1 / novalidate-cert изменен на / notls — новый сервер

Подключение и логин: 0.50686407089233

Папка изменений: 0.17428183555603

Все время: 0.68127012252808

SCRIPT 2 AS IS — новый сервер

Connect: 0.42295503616333

Логин: 0.4013729095459

Изменить папку: 0.057337045669556

Конечный скрипт: 0.88185501098633

Проект также имеет консольную систему отладки, из которой мне удалось собрать следующую информацию:

— средний поиск в почтовом ящике занимает около 0,01-0,02 секунды на старом сервере, в то время как на новом сервере тот же поиск занимает примерно в 7-8 раз больше

— загрузка одного электронного письма с почтового сервера на старом сервере занимает от 0,05 с до 0,1 с, в то время как на новом сервере существуют электронные письма (в основном те, которые имеют текст / HTML с вложенными файлами изображений), которые принимают 4 секунды, чтобы получить

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

Я старался трассировкапинг-При использовании почтового сервера из новой среды проекта, я получил следующие результаты:

traceroute to mymailserver (xxx.xxx.xxx.xx), 30 hops max, 60 byte packets
1  xxx.xxx.x.xxx 0.658 ms xxx.xxx.x.xxx 0.510 ms xxx.xxx.x.xxx 0.471 ms
2  xxx.xxx.xxx.xxx  0.434 ms xxx.xxx.xxx.xxx 0.333 ms xxx.xxx.xxx.xxx 0.247 ms
3  xxx.xxx.xxx.xx 0.984 ms  0.986 ms xxx.xxx.xxx.xxx 0.270 ms
4  xxx.xxx.xxx.xx 0.964 ms xxx.xxx.xx.xxx 1.414 ms  1.449 ms
5  xxx.xxx.xx.xxx 1.253 ms  1.211 ms xxx.xxx.xx.xxx 22.078 ms
6  xxx.xxx.xx.xxx 43.920 ms  41.971 ms  44.860 ms
7  xx.xx.xx.xxx 45.835 ms xxx.xxx.xx.xxx 42.055 ms  41.254 ms
8  * xxx.xxx.xxx.xxx 42.999 ms *
9  xxx.xxx.xxx.xx 41.989 ms  42.235 ms  44.925 ms

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

** ДРУГАЯ ИНФОРМАЦИЯ НА ОСНОВЕ ПОМОЩИ ОТ ДРУГИХ ПОЛЬЗОВАТЕЛЕЙ STACKOVERFOW: **

Я также скачал xDebug и попробовал отследить функции двух вышеупомянутых скриптов. Хотя я не получил никакой полезной информации с помощью функции трассировки функции imap_open, я заметил, что когда я выполняю трассировку пакета PEAR, функция fgets (), выполняемая где-то в классе, занимает значительно больше времени, чем любая другая функция, выполняется (около 0,05 секунд)

Мои вопросы):
— Правильно ли я предполагаю из этой информации, что это должно быть проблемой с сетью?
— Если да, то как я могу решить это, или каковы раздачи, что это действительно проблема с сетью?

— Если нет, как я мог бы лучше изолировать проблему и найти решение?

Я предлагаю:

— спасибо, кто-то, кто помогает мне изолировать, если это проблема с сетью, или что-то еще

— щедрость, если кому-то удастся помочь мне решить эту проблему и ускорить обработку функций imap

3

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]