Как переопределить тайм-аут php.ini для функциональности imap_timeout с защищенными серверами POP3

#php #imap #pop3

#php #imap #pop3

Вопрос:

Библиотека PHP IMAP не имеет встроенных способов изменения функции imap_timeout для безопасных подключений pop3. Я хочу создать эту функциональность, чтобы я мог установить тайм-аут в 1 секунду для подключений к защищенным серверам pop3, но я просто не уверен, с чего бы мне начать изучать переопределение команды php.ini в функции PHP. Есть идеи?

imap_timeout (1, ) отлично работает для подключений pop3, но, по-видимому, не для подключений pop3s (ssl, порт 995), где по-прежнему применяется тайм-аут сокета по умолчанию. Это относится к php 4.3.10, не тестировалось на других версиях.


Мы заглянули в исходный код, чтобы выяснить, что на самом деле делает эта функция и как ее использовать. Функция переопределяет параметр default_socket_timeout по умолчанию из вашего файла php.ini

Вы можете получить текущую длину тайм-аута для каждого типа тайм-аута, вызвав функцию как:

imap_timeout (timeout_type); или imap_timeout (timeout_type, -1);

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

imap_timeout (timeout_type,);

Типы тайм-аута следующие:

1: Открыть 2: Прочитать 3: Записать 4: Закрыть

Не похоже, что тип закрытия был реализован.

Источник: https://students.kiv.zcu.cz/doc/php5/manual/cs/function.imap-timeout.php.html

Комментарии:

1. Вы пробовали ini_set('default_socket_timeout', 999) ?

2. Я хочу установить тайм-аут в 1 секунду только для подключений pop3, но я беспокоюсь, что это приведет к тайм-ауту всей функции.

3. @Havenard ini_set(‘default_socket_timeout’, 2); у меня не работает.

4. Я поражен, что это все еще проблема для меня в PHP5.3. Вы нашли решение в другом месте?

5. @coderama — если для вас это проблема, не стесняйтесь вносить любые другие разъяснения в комментарии. Например, какую версию PHP вы используете?

Ответ №1:

используйте default_socket_timeout

вот небольшая демонстрация для переопределения конфигурации по умолчанию.

 ini_set('default_socket_timeout', 2);
// your socket based code here

// restore to the default socket timeout
ini_restore('default_socket_timeout');