#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');