- 论坛徽章:
- 0
|
本帖最后由 bestscw 于 2011-05-16 16:53 编辑
楼主,我的一个多进程插入数据库
看下,会开启18个进程,同时插
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <sys/time.h>
- #include <unistd.h>
- #include <mysql/mysql.h>
- #include<sys/types.h>
- #include<sys/wait.h>
- #define DB_HOST "127.0.0.1"
- #define DB_USER "root"
- #define DB_PASS ""
- #define DB_NAME "test"
- #define DB_PORT 3307
- int main(int argc, char **argv)
- {
- MYSQL mysql;
- unsigned int i;
- int rtn; /*子进程的返回数值*/
- unsigned int process_no;
- unsigned int userId;
- unsigned int type;
- unsigned int itemCate;
- unsigned int itemType;
- unsigned int itemNum;
- unsigned int totalCost;
- unsigned int consumeTime;
- unsigned int leftBalance;
- char itemName[1000] ;
- char sql[20000] ;
- struct timeval time_start,time_end;
- float execute_time;
-
- //srand(time(0));
- for(process_no = 1; process_no < 18; process_no++)
- {
- if(fork() == 0)
- {
- // 开始执行时间
- gettimeofday(&time_start,NULL);
- mysql_init(&mysql);
- if(!mysql_real_connect(&mysql,DB_HOST,DB_USER,DB_PASS,DB_NAME,DB_PORT,NULL,0))
- {
- fprintf(stderr, "Failed to connect to database: Error: %s\n",mysql_error(&mysql));
- }
- mysql_query(&mysql,"SET NAMES utf8");
- for(i = 0; i < 444444; i++)
- {
- sprintf(itemName,"%s","");
- userId = rand()%19071388 + 1;
- type = rand()%4 + 1;
- itemCate = rand()%15 + 1;
- itemType = rand()%100 + 1;
- itemNum = rand()%100 + 1;
- totalCost = rand()%10000 + 1;
- consumeTime = rand()%1309120853 + 1;
- leftBalance = rand()%10000 + 1;
- sprintf(sql,"insert into user_consume1(userId,type,itemCate,itemType,itemNum,totalCost,consumeTime,leftBalance,itemName)values(%d,%d,%d,%d,%d,%d,%d,%d,'')",
- userId,type,itemCate,itemType,itemNum,totalCost,consumeTime,leftBalance);
- if(mysql_query(&mysql,sql))
- {
- fprintf(stderr,"query failed:%s",mysql_error(&mysql));
- }
- }
- mysql_close(&mysql);
- // 结束执行时间
- gettimeofday(&time_end,NULL);
- execute_time = (time_end.tv_sec - time_start.tv_sec) + (time_end.tv_usec - time_start.tv_usec)/1000000;
- printf("execute time:%f\n",execute_time);
- exit(0);
- }
- else
- {
- /* 父进程, 等待子进程结束,并打印子进程的返回值 */
- //wait ( &rtn );
- //printf("child process return %d\n",rtn);
- //return 0;
- //printf("execute child process return %d\n",process_no);
- }
- }
- return 0;
- }
复制代码
mysql_insert.rar
(1.06 KB, 下载次数: 54)
|
|