[Info-vax] Apache + mod_php performance
Dan Cross
cross at spitfire.i.gajendra.net
Mon Oct 7 15:41:49 EDT 2024
In article <ve16v4$1mvdn$1 at dont-email.me>,
Arne Vajhøj <arne at vajhoej.dk> wrote:
>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.
It is almost certainly the second.
- Dan C.
More information about the Info-vax
mailing list