|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2003-01-20 02:45 UTC] mikael dot suvi at trigger dot ee
Script:
<?
$MailStream = 0;
function foo()
{
global $MailStream;
$ar = imap_open("{some.host/pop3:110}", "user", "pass");
$MailStream = $ar;
return $ar;
}
$arr = foo();
imap_close($arr);
sleep(4);
die();
?>
will not close my connection to mailserver when calling function imap_close.
In mailserver log the following lines indicate that the stream is not closed:
Jan 20 10:28:46 mail-fe73 pop3d: LOGIN, user=suurjuht, ip=[::ffff:xxx.xxx.xxx.xxx]
Jan 20 10:28:50 mail-fe73 pop3d: LOGOUT, user=suurjuht, ip=[::ffff:xxx.xxx.xxx.xxx], top=0, retr=0
Notice the 4 second delay when user is logged out. In closes the connection when script terminates.
I guess the problem is when assigning the resource value to global variable the resources reference count is increased by one. When calling imap_close the reference value is checked and internal pop3_close is called only when reference count is 1.
c-client version is 2001
I think this behaviour is not good.
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Wed Oct 29 08:00:01 2025 UTC |
It works if I return by refrence. But still, if call imap_close() I'm expecting it to close my stream. It will make some bugs things _very hard_ to track. For example: if I delete a message before closing stream and after closing I open a new stream to the same mailserver, I still get the same number of messages in my mailbox. <? $MailStream = 0; function foo() { global $MailStream; $ar1 = imap_open("{some.server/pop3:110}", "user", "pass"); $MailStream = $ar1; return $ar1; } $arr = foo(); imap_delete($arr, 1); imap_expunge($arr); print imap_num_msg($arr) . " message(s) in your INBOX<br>"; imap_close($arr); $arr1 = foo(); print imap_num_msg($arr1) . " message(s) in your INBOX"; ?> Output: 7 message(s) in your INBOX 8 message(s) in your INBOX