Bug->Req #52811 [Opn]: the notification callback method never gets call when using socket streams

From: Date: Wed, 28 Jul 2021 09:13:34 +0000
Subject: Bug->Req #52811 [Opn]: the notification callback method never gets call when using socket streams
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-235425@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=52811&edit=1

 ID:                 52811
 Updated by:         cmb@php.net
 Reported by:        recycling dot sp dot am at gmail dot com
 Summary:            the notification callback method never gets call
                     when using socket streams
 Status:             Open
-Type:               Bug
+Type:               Feature/Change Request
 Package:            Streams related
 Operating System:   *
 PHP Version:        5.3.3
 Block user comment: N
 Private report:     N

 New Comment:

> As far as I can see ftp and http wrappers support it but tcp
> socket (or even file://) don't.

Right; this is documented[1] now.

[1] <https://www.php.net/manual/en/function.stream-context-set-params.php#refsect1-function.stream-context-set-params-parameters>


Previous Comments:
------------------------------------------------------------------------
[2018-07-12 22:06:05] cmb@php.net

Related To: Bug #76605

------------------------------------------------------------------------
[2010-09-10 12:55:07] recycling dot sp dot am at gmail dot com

Description:
------------
At least when the context is set to 'tcp' and the socket is opened with
stream_socket_client, the callback method defined with the notification parameters of
stream_context_set_params never get called. 

And the current documentation is pointless regarding which wrapper actually support the
notifications. 
As far as I can see ftp and http wrappers support it but tcp socket (or even file://) don't.

Callback notification function is the way to perform efficient and advanced monitoring on socket.
It should be invoked for the following events:
STREAM_NOTIFY_RESOLVE Yes
STREAM_NOTIFY_CONNECT Yes
STREAM_NOTIFY_AUTH_REQUIRED No
STREAM_NOTIFY_MIME_TYPE_IS No
STREAM_NOTIFY_FILE_SIZE_IS No
STREAM_NOTIFY_REDIRECTED No
STREAM_NOTIFY_PROGRESS 	Yes but optional 
STREAM_NOTIFY_COMPLETED Yes 
STREAM_NOTIFY_FAILURE Oh Yes
STREAM_NOTIFY_AUTH_RESULT No
STREAM_NOTIFY_SEVERITY_INFO Yes
STREAM_NOTIFY_SEVERITY_WARN Yes
STREAM_NOTIFY_SEVERITY_ERR Yes

Test script:
---------------
<?php

// define our callback method
function snc() { var_dump(func_get_args()); }

$ctx= stream_context_create();
stream_context_set_params($ctx, array("notification" => "snc"));
$uri= "htttp://www.example.net";
$socket = stream_socket_client($uri, $errno, $errstr, 0, STREAM_CLIENT_CONNECT, $ctx); // snc should
already have been called here for at least connection and resolv.
$line =fgets($socket); // get one line.
fclose($socket); // close the connection. 
// Run the above lines and snc() never gets called.

Expected result:
----------------
1. Update documentation to let developers know the current state of the callback support 
2. Have the callback method invoked when using socket streams for the following events (where
applicable).


Actual result:
--------------
The scn method never gets called.


------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=52811&edit=1


Thread (3 messages)

« previous php.bugs (#235425) next »