PHP C FASTCGI
出自学习笔记
目录 |
PHP 代码
<?php
mysql_connect( "localhost", "root", "root" );
mysql_select_db( "adcount" );
$st = mysql_query( "INSERT INTO page_stat ( apid, time, ipadress, stay, froms, browser, createtime ) VALUES(
'".$_SERVER["QUERY_STRING"]."','".time().
"','".$_SERVER["REMOTE_ADDR"]."','500','".$_SERVER["HTTP_REFERER"]
."','".$_SERVER["HTTP_USER_AGENT"]."','".time()."')" );
if ( ! $st ) {
echo mysql_error();
} else {
echo "OK";
}
mysql_close();
?>
fastcgi 代码
#include <stdlib.h>
#include <string.h>
#include <syslog.h>
#include <unistd.h>
#include "fcgi_config.h"
#include <fcgiapp.h>
#define LISTENSOCK_FILENO 0
#define LISTENSOCK_FLAGS 0
/*
*
* gcc myfastcgi.c -o myfastcgi.fcgi -I/usr/local/include -L/usr/local/lib -lfcgi
*/
int main(int argc, char** argv) {
//~ openlog ("testfastcgi", LOG_CONS|LOG_NDELAY, LOG_USER);
int err = FCGX_Init (); // call before Accept in multithreaded apps
if (err) { syslog (LOG_CRIT, "FCGX_Init failed: %d", err); return 1; }
FCGX_Request cgi;
err = FCGX_InitRequest(&cgi, LISTENSOCK_FILENO, LISTENSOCK_FLAGS);
if (err) { syslog (LOG_CRIT, "FCGX_InitRequest failed: %d", err); return 2; }
while (1) {
err = FCGX_Accept_r(&cgi);
if (err) { syslog (LOG_CRIT, "FCGX_Accept_r stopped: %d", err); break; }
char** envp;
int size = 200;
//~ syslog (LOG_CRIT, "for start" );
for (envp = cgi.envp; *envp; ++envp) size += strlen(*envp) ;
//~ syslog (LOG_CRIT, "for stop" );
char* result = (char*) malloc(size);
if ( result == NULL ) {
syslog (LOG_CRIT, "result is NULL" );
return 1;
}
strncat (result, "Status: 200 OK\r\nContent-Type: text/html\r\n\r\n", size);
strncat (result, "<html><head><title>testcgi</title></head><body>< ul>\r\n", size);
for (envp = cgi.envp; *envp; ++envp) {
strncat(result, "< li>", size);
strncat(result, *envp, size);
strncat(result, "</ li>\r\n", size);
}
strncat(result, "</ ul></body></html>\r\n", size);
FCGX_PutStr(result, strlen(result), cgi.out);
FCGX_Finish_r(&cgi);
}
FCGX_ShutdownPending();
return 0;
}
相关链接
http://www.cs.tut.fi/~jkorpela/forms/cgic.html http://www.harding.motd.ca/cgl/ http://hoohoo.ncsa.illinois.edu/cgi/overview.html http://www.w3.org/Protocols/HTTP/HTRESP.html http://code.google.com/p/mongoose/ http://nginx.net
作者介绍
16hot ( Jonsen Yang、 杨明茂 ) http://16hot.blog.isyi.com 喜欢FreeBSD/Linux,从事多年的Unix/Linux系统管理和PHP开发工作。
