How to override php.ini timeout for imap_timeout functionality with secure POP3 servers
Asked Answered
U

1

9

The PHP IMAP Library doesn't have built in ways to change the imap_timeout function for secure pop3 connections. I'm looking to build this functionality so I can set timeout to 1 second for connections for secure pop3 servers, but I'm just not sure where I would start to learn about overriding the php.ini command within a PHP function. Any ideas?

imap_timeout(1, ) works fine for pop3 connections, but apparently not for pop3s (ssl, port 995) connections, where the default socket timeout still applies. This applies to php 4.3.10, not tested on other versions.


We looked into the source to find out what this function actually does and how to use it. The function overrides the default_socket_timeout setting from your php.ini file

You can retrieve the current timeout length for each timeout type by calling the function as:

imap_timeout(timeout_type); or imap_timeout(timeout_type,-1);

You can set the timeout length for any of the timeout types by setting the timeout value to a number of seconds.

imap_timeout(timeout_type,);

The timeout types are as follows:

1: Open 2: Read 3: Write 4: Close

It does not appear that the close type has been implemented.

Source: https://students.kiv.zcu.cz/doc/php5/manual/cs/function.imap-timeout.php.html

Unyoke answered 11/5, 2011 at 19:25 Comment(6)
Have you tried ini_set('default_socket_timeout', 999) ?Morton
I want to get timeout to 1 second for only pop3 connections, but I'm worried it will timeout the entire function.Unyoke
@Morton ini_set('default_socket_timeout', 2); doesn't work for me.Nikethamide
I am amazed that this is still a problem for me in PHP5.3. Have you found a solution elsewhere?Catmint
@coderama - if this is a problem for you, feel free to make any other clarifications in the comments. For example, what version of PHP are you running?Benefice
it was reported as a bug over a year ago: bugs.php.net/bug.php?id=61846 ; short of fixing this bug in php you best chance is probably to use an alternate imap librarySwish
G
6

use the default_socket_timeout

here is small demonstration to override default configuration.

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

// restore to the default socket timeout
ini_restore('default_socket_timeout');
Gismo answered 6/9, 2013 at 10:19 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.