[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