. stream_socket_client() - similar to fsockopen(), but more powerful.
. stream_socket_server() - Creates a server socket.
. stream_socket_accept() - Accept a client connection.
. stream_socket_get_name() - Get local or remote name of socket.
Tidy up some leaks and debug printfs.
Move more streams functions into streamsfuncs.c and streamsfuncs.h.
Main Changes:
- Implement a socket transport layer for use by all code that needs to open
some kind of "special" socket for network or IPC.
- Extensions can register (and override) transports.
- Implement ftruncate() on streams via the ioctl-alike option interface.
- Implement mmap() on streams via the ioctl-alike option interface.
- Implement generic crypto API via the ioctl-alike option interface.
(currently only supports OpenSSL, but could support other SSL toolkits,
and other crypto transport protocols).
Impact:
- tcp sockets can be overloaded by the openssl capable sockets at runtime,
removing the link-time requirement for ssl:// and https:// sockets and
streams.
- checking stream types using PHP_STREAM_IS_SOCKET is deprecated, since
there are now a range of possible socket-type streams.
Working towards:
- socket servers using the new transport layer
- mmap support under win32
- Cleaner code.
# I will be updating the win32 build to add the new files shortly
# after this commit.
. Centralized the functions sunrise/sunset to php_sunrise_sunset
to lessen duplicate code.
. Made wrapper function php_do_date_sunrise_sunset() to lessen
duplicate code.
. Coding style fixes.
. renamed sunfuncs.h -> php_sunfuncs.h
@ new date_sunrise() function.
@ new date_sunset() function.
#since i have no premission updating the win32 project file, i'm sending patch on the list.
to calling proc_close().
Implement proc_get_status(resource $process) which returns an array of
information about a process created with proc_open().
The information includes:
array(
"command" => string "name of the command",
"pid" => long process identifier,
"running" => bool true if the process is still running
"exitcode" => long exitcode if the process exited
"signaled" => bool true if the process was signaled
"termsig" => long signal number if signaled
"stopped" => bool true if the process is stopped
"stopsig" => long signal number if stopped
);