C 语言 CGI 访问计数器

用 C 语言写的简单的 CGI 访问计数器程序,用文件保存的计数,我觉得比数据库高效一点吧,呵呵。

/* counter.c
 * Heihaier <admin@heiher.info>
 */
 
#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char * argv[])
{
	unsigned long long int counter = 0;
	FILE * f = NULL;
	char file[256];
 
	printf("Content-type: text/html;\n\n");
 
	char * query = getenv("QUERY_STRING");
	if(NULL == query)
	  goto error;
 
	snprintf(file, 256, "./data/%s", query);
 
	f = fopen(file, "rw+");
	if(NULL == f)
	  goto error;
 
	fread(&counter, sizeof(unsigned long long int), 1, f);
 
	printf("document.write(\"<b>%llu</b>\");", ++counter);
 
	fseek(f, 0, SEEK_SET);
	fwrite(&counter, sizeof(unsigned long long int), 1, f);
 
	fclose(f);
 
	return 0;
error:
	return -1;
}
gcc counter.c -o /var/web/cgi-bin/counter.cgi
mkdir /var/web/cgi-bin/data
touch /var/web/cgi-bin/data/www.heiher.info
chmod 666 /var/web/cgi-bin/data/www.heiher.info

Over!

Leave a Reply

Your email address will not be published. Required fields are marked *