Sujet : Re: Apache + mod_php performance
De : arne (at) *nospam* vajhoej.dk (Arne Vajhøj)
Groupes : comp.os.vmsDate : 07. Oct 2024, 18:49:23
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <ve16v4$1mvdn$1@dont-email.me>
References : 1 2 3 4 5 6 7
User-Agent : Mozilla Thunderbird
On 10/7/2024 12:47 PM, Mark Berryman wrote:
It is most definitely possible as that is precisely what the auxiliary server in TCPIP Services does. It listens for a connection, then creates a process to handle it. See the description of TCPIP$C_AUXS in the TCPIP Services programming documentation.
SYS$COMMON:[SYSHLP.EXAMPLES.TCPIP]TCPIP$TCP_SERVER_SOCK_AUXS.C has:
/*
* create socket
*/
if ( (sockfd = socket(TCPIP$C_AUXS, SOCK_STREAM, 0)) < 0 )
{
perror( "Failed to create socket" );
exit( EXIT_FAILURE );
}
but the equivalent SYS$COMMON:[SYSHLP.EXAMPLES.TCPIP]TCPIP$TCP_SERVER_QIO_AUXS.C
gives some hints about what it is doing:
struct sockchar conn_sockchar; /* connect socket char buffer */
...
$DESCRIPTOR( inet_device, /* string descriptor with logical */
"SYS$NET:" ); /* name of internet pseudodevice */
...
/*
* init connection socket characteristics buffer
*/
conn_sockchar.prot = TCPIP$C_TCP;
conn_sockchar.type = TCPIP$C_STREAM;
conn_sockchar.af = TCPIP$C_AUXS;
...
/*
* assign device socket
*/
status = sys$assign( &inet_device, /* device name */
&conn_channel, /* i/o channel */
0, /* access mode */
0 /* not used */
);
if ( !(status & STS$M_SUCCESS) )
{
printf( "Failed to assign i/o channel to TCPIP device\n" );
exit( status );
}
...
/*
* create connection socket
*/
status = sys$qiow( EFN$C_ENF, /* event flag */
conn_channel, /* i/o channel */
IO$_SETMODE, /* i/o function code */
&iosb, /* i/o status block */
0, /* ast service routine */
0, /* ast parameter */
&conn_sockchar, /* p1 - socket char buffer */
0, /* p2 */
0, /* p3 */
0, /* p4 */
0, /* p5 */
0 /* p6 */
);
if ( status & STS$M_SUCCESS )
status = iosb.status;
if ( !(status & STS$M_SUCCESS) )
{
printf( "Failed to create socket\n" );
exit( status );
}
But it is not clear (at least not to me) whether:
- the original TCP/IP device was made shareable and SYS$NET just points to it
or:
- the original TCP/IP device is connected to a new pseudodevice that
SYS$NET points to
The first seems by far the simplest, but the comment indicate
the second.
Arne