PHP chilkat занимает много времени для некоторых функций - PullRequest
0 голосов
/ 10 ноября 2019

Я использую компонент php chilkat, а некоторые функции иногда требуют длительного времени.

imap->Disconnect(); максимальное обнаруженное время - 60 секунд.

Когда я просто выполняю imap = null - это все еще требуется60 секунд.

Полагаю, когда он разрушен, он также отключается внутри компонента chilkat.

Как я могу предотвратить длительное время выполнения, потому что скорость приложения плохая.

Могу ли я просто немедленно разорвать соединение?

Почему это так:

selectMailbox() - максимальное обнаруженное время - 68 секунд.

занимает столько времени?

closeMailbox() - 10 секунд.

Я установил ReadTimeout = 2, но время выполнения было обнаружено 5 секунд ..

Это код:

$time = microtime(true);

$this->imap->put_ReadTimeout(2);
$this->imap->Disconnect();
$this->imap = null;

var_dump(microtime(true) - $time);

1 Ответ

1 голос
/ 11 ноября 2019

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

Можно установить для свойства Imap.ReadTimeout меньшее значение. Значение по умолчанию составляет 30 секунд. Допустим, вы установили ReadTimeout = 5. Это скажет Chilkat отказаться от соединения / сеанса, если сервер IMAP не отправит ответ в течение 5 секунд. Хорошей частью является то, что ваша функция вернется через 5 секунд. Плохая часть в том, что ваш сеанс будет потерян, и вам нужно будет повторно подключиться, повторно аутентифицироваться и повторно выбрать почтовый ящик. Может быть, это нормально для вызова Disconnect. Это, вероятно, не в порядке для вызова SelectMailbox.

...