Hi, all -
Not sure why the domain @metrodigi.com is on this working group's list.  I
did not sign up for it.

Since I have to "put up" with the email noise, I might as well get
something out of it so here goes:

We are a well funded, rapidly growing tech company working near San
Francisco that is looking for senior PHP developers. Awesome work
environment, super good salary and benefits and very cool cloud/mobile
growth market.

Check us out: http://www.metrodigi.com/jobs

HIRING 4-5 DEVELOPERS IMMEDIATELY.

Cheers,
Steve

Steven McKinney
*metrodigi  |  CEO*
tel: 415.578.2926  |  cell: 415.806-8654 |  fax: 415.785.3421  |
www.metrodigi.com



On Fri, Sep 6, 2013 at 6:03 AM, Daniel Lowrey <rdlow...@gmail.com> wrote:

> This is a reasonable point. Personally I'd prefer to have as much socket
> functionality as possible available natively without an extension. More
> discussion is probably necessary on this point, though.
>
> So what's the ultimate goal? Do we want to do try to move away from the
> sockets extension? Or should we maintain the status quo (broad support for
> standard use-cases with the extension there if you need more)? If it's the
> latter I'm not sure `stream_socket_listen()` is actually necessary. If we
> want to keep ext/sockets around for non-trivial use-cases then adding
> one-off stream functions like this might only serve to muddy the waters and
> create bloat.
>
> Also ...
>
> > For instance, the API is likely to get messy if you start trying to
> > set arbitrary options on a socket before binding.
>
> I'm not sure consistent cross-OS socket support will ever be anything but
> messy (internally), which is a big part of why a uniform API would be
> useful.
>
>
> On Fri, Sep 6, 2013 at 8:47 AM, Chris Wright <daveran...@php.net> wrote:
>
> > I'm generally agreed with everything said below by everyone - but Wez's
> > message has
> > caused me to wonder whether it might be worth simply creating
> > stream_import_socket()
> > instead.
> >
> > Yes, the sockets extension is not always available, but I would suggest
> > that
> > any
> > instance that needs something that streams cannot currently provide is
> > likely to be
> > an instance over which the developer has more control (anyone trying to
> > listen for
> > connections on shared hosting is going to run into more roadblocks than
> > just
> > a lack
> > of the sockets ext, for example).
> >
> > Equally, it's nice to be able to treat a socket as a generic stream, and
> I
> > wouldn't
> > want this functionality to disappear or become harder to use.
> >
> > As it stands, there is currently quite a bit of duplicated functionality
> -
> > I
> > think
> > that a line needs be drawn that defines which extension is responsible
> for
> > what
> > i.e. leave the trivial stuff to streams and anything more advanced - I
> saw
> > multicast being banded about below - to the sockets extension. For
> > instance,
> > the
> > API is likely to get messy if you start trying to set arbitrary options
> on
> > a
> > socket before binding.
> >
> > That said, I'm have no actual objection to Daniel's patch, and I too
> would
> > like to
> > see a stream_socket_set_option() or similar.
> >
> > My $0.02
> >
> > Thanks, Chris
> >
> > -----Original Message-----
> > From: Daniel Lowrey [mailto:rdlow...@gmail.com]
> > Sent: 06 September 2013 06:24
> > To: Wez Furlong
> > Cc: internals@lists.php.net; Sara Golemon
> > Subject: [PHP-DEV] Re: New function: stream_socket_listen()
> >
> > Hi! I'm with you @Wez -- allowances for assigning common socket options
> > would be a major win. I'll see what I can do about working on something
> > more
> > robust than this one-off function PR.
> >
> > On Friday, September 6, 2013, Wez Furlong wrote:
> >
> > > I'm not opposed to the idea; the reason that I didn't implement it
> > > initially is that I wanted something functional in the core
> > > (ext/sockets was often not available) and we didn't have "PHP Spirit"
> > > equivalents of the various and murky socket option setting APIs that
> > > are present in ext/sockets (it's not the most intuitive interface even
> > for
> > C developers).
> > >
> > > So we got an implementation that does what you want for most cases;
> > > bind and listen in one step.
> > >
> > > I won't block this patch, but it would be /really/ great if you could
> > > follow-on with a diff to allow setting the most commonly used socket
> > > options (plus SO_REUSEPORT, since you mentioned it) and also a
> > > function to allow setting CLOEXEC (perhaps stream_set_cloexec(bool)),
> > > which is something I wish I'd added back when I put this stuff
> together!
> > >
> > > You win super extra crazy bonus points for allowing something like
> > > this
> > >
> > > https://bitbucket.org/wez/couchshare/src/bcbf02e1a70d0dba86564480c63f5
> > > d6596658815/upnp-srv/couchshare.c?at=default
> > > for setting multicast options.
> > >
> > > Thanks!
> > >
> > > --Wez.
> > >
> > >
> > >
> > > On Thu, Sep 5, 2013 at 12:10 PM, Sara Golemon
> > > <poll...@php.net<javascript:_e({}, 'cvml', 'poll...@php.net');>
> > > > wrote:
> > >
> > >> Seems reasonable to me, but Wez should probably weigh in on it.  I
> > >> vaguely recall a conversation with him when he first implemented
> > >> stream_socket_*() and a reason why listen wasn't in the API.
> > >>
> > >> -Sara
> > >>
> > >>
> > >> On Thu, Sep 5, 2013 at 10:30 AM, Daniel Lowrey
> > >> <rdlow...@gmail.com<javascript:_e({}, 'cvml', 'rdlow...@gmail.com');>
> > >> > wrote:
> > >>
> > >>> The stream socket functions are incredibly useful and obviate the
> > >>> need for the sockets extension for the vast majority of potential
> > >>> use-cases.
> > >>> However, it's currently it's not possible bind a socket and listen
> > >>> for connections in separate steps using stream_socket_server().
> > >>>
> > >>> This _can_ be done with the aid of ext/sockets like so:
> > >>>
> > >>> $stream = stream_socket_server('tcp://0.0.0.0:0', $errno, $errstr,
> > >>> STREAM_SERVER_BIND); $sock = socket_import_stream($stream);
> > >>> socket_listen($sock);
> > >>>
> > >>> Why is this useful? Well, for example, binding to a port in the main
> > >>> process and then listening individually in child forks/threads
> > >>> trivializes scaling socket servers. By listening on the same bound
> > >>> socket in multiple processes you get the advantage of the OS
> > >>> distributing new client connections to the individual workers
> > >>> instead of routing them in userland.
> > >>> Additionally, newer linux kernel versions (3.9x) now support the
> > >>> SO_REUSEPORT socket option which only makes this functionality more
> > >>> attractive. Admittedly you still need ext/sockets to reap the
> > >>> benefits of SO_REUSEPORT, but this may not always be the case.
> > >>>
> > >>> My proposed patch adds a very simple function so that listening may
> > >>> be decoupled from binding without the need for ext/sockets:
> > >>>
> > >>> $stream = stream_socket_server('tcp://0.0.0.0:0', $errNo, $errStr,
> > >>> STREAM_SERVER_BIND); // do stuff, fork, etc. Then in the child
> > >>> process:
> > >>> stream_socket_listen($server);
> > >>>
> > >>> Existing functionality is not modified and there are no BC breaks.
> I.E.
> > >>> you
> > >>> can still bind + listen in a single step like before:
> > >>>
> > >>> $stream = stream_socket_server('tcp://0.0.0.0:0', $errNo, $errStr,
> > >>> STREAM_SERVER_BIND | STREAM_SERVER_LISTEN);
> > >>>
> > >>> This addition seemed a bit trivial for an RFC, so and I didn't
> > >>> bother hitting the wiki. The link to the relevant pull request
> > >>> follows. Any thoughts, comments and opinions are welcome:
> > >>>
> > >>> https://github.com/php/php-src/pull/431
> > >>>
> > >>
> > >>
> > >
> >
> >
>

Reply via email to