summaryrefslogtreecommitdiff
path: root/src/fcgi-stat-accel.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fcgi-stat-accel.c')
-rw-r--r--src/fcgi-stat-accel.c118
1 files changed, 0 insertions, 118 deletions
diff --git a/src/fcgi-stat-accel.c b/src/fcgi-stat-accel.c
deleted file mode 100644
index bae39e6b..00000000
--- a/src/fcgi-stat-accel.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- compile with:
-
- $ gcc -lfcgi -lpthread fcgi-stat-accel.c -o fcgi-stat-accel
-
- fcgi-stat-accel will use the PHP_FCGI_CHILDREN environment variable to set the thread count.
-
- The default value, if spawned from lighttpd, is 20.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#ifdef HAVE_PTHREAD_H
-#include <pthread.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <string.h>
-#include <fcntl.h>
-
-#include <stdlib.h>
-#ifdef HAVE_FASTCGI_FASTCGI_H
-#include <fastcgi/fcgiapp.h>
-#elif defined (HAVE_FASTCGI_H)
-#include <fcgiapp.h>
-#endif
-
-#define THREAD_COUNT 20
-
-#define FORBIDDEN(stream) \
- FCGX_FPrintF(stream, "Status: 403 Forbidden\r\nContent-Type: text/html\r\n\r\n<h1>403 Forbidden</h1>\n");
-#define NOTFOUND(stream, filename) \
- FCGX_FPrintF(stream, "Status: 404 Not Found\r\nContent-Type: text/html\r\n\r\n<h1>404 Not Found</h1>\r\n%s", filename);
-#define SENDFILE(stream, filename) \
- FCGX_FPrintF(stream, "X-LIGHTTPD-send-file: %s\r\n\r\n", filename);
-
-#define UNUSED(x) ( (void)(x) )
-
-static void *doit(void *a){
- FCGX_Request request;
- int rc;
- char *filename;
- UNUSED(a);
-
- FCGX_InitRequest(&request, 0, /* FCGI_FAIL_ACCEPT_ON_INTR */ 0);
-
- while(1){
- int fd;
- //Some platforms require accept() serialization, some don't. The documentation claims it to be thread safe
-// static pthread_mutex_t accept_mutex = PTHREAD_MUTEX_INITIALIZER;
-// pthread_mutex_lock(&accept_mutex);
- rc = FCGX_Accept_r(&request);
-// pthread_mutex_unlock(&accept_mutex);
-
- if(rc < 0)
- break;
-
- //get the filename
- if((filename = FCGX_GetParam("SCRIPT_FILENAME", request.envp)) == NULL){
- FORBIDDEN(request.out);
- //don't try to open directories
- }else if(filename[strlen(filename)-1] == '/'){
- FORBIDDEN(request.out);
- //open the file
- }else if((fd = open(filename, O_RDONLY)) == -1){
- NOTFOUND(request.out, filename);
- //no error, serve it
- }else{
- SENDFILE(request.out, filename);
-
- close(fd);
- }
-
- FCGX_Finish_r(&request);
- }
- return NULL;
-}
-
-int main(void){
- int i,j,thread_count;
- pthread_t* id;
- char* env_val;
-
- FCGX_Init();
-
- thread_count = THREAD_COUNT;
- env_val = getenv("PHP_FCGI_CHILDREN");
- if (env_val != NULL) {
- j = atoi(env_val);
- if (j != 0) {
- thread_count = j;
- };
- };
-
- id = malloc(sizeof(*id) * thread_count);
-
- for (i = 0; i < thread_count; i++) {
- pthread_create(&id[i], NULL, doit, NULL);
- }
-
- /* block the current thread by executing one */
- doit(NULL);
-
- for (i = 0; i < thread_count; i++) {
- pthread_join(id[i], NULL);
- }
-
- free(id);
-
- return 0;
-}
-