int main(void){ gearman_worker_st worker; //Create the worker gearman_worker_create(&worker); //Connect the worker to the server and chech it worked gearman_return_t ret= gearman_worker_add_server(&worker, "localhost", 4730); if (gearman_failed(ret)){ return EXIT_FAILURE; } //register function, (worker, job_queue_name, timeout, function_to_do_work, context) ret = gearman_worker_add_function(&worker,"image",0,doing_work,NULL); if(gearman_failed(ret)){ return EXIT_FAILURE; } //Infinite loop to keep watching while(1){ //Does the work ret = gearman_worker_work(&worker); if ( ret != GEARMAN_SUCCESS ) { fprintf(stderr,"worker error: %s\n", gearman_worker_error( &worker ) ); gearman_job_free_all( &worker ); gearman_worker_free( &worker ); /* sleep on error to avoid cpu intensive infinite loops */ sleep(5); } } return EXIT_SUCCESS; }
int main() { gearman_return_t ret; gearman_worker_st *worker = gearman_worker_create(NULL); gearman_worker_add_server(worker,"127.0.0.1",0); gearman_worker_add_function(worker,"syncToRedis",30, syncToRedis, NULL); gearman_worker_add_function(worker,"sync_UserInfo",30, sync_UserInfo, NULL); gearman_worker_add_function(worker,"sync_UserAndDeviceRelationShip",30, sync_UserAndDeviceRelationShip, NULL); while(1) { ret = gearman_worker_work(worker); if (ret != GEARMAN_SUCCESS) { printf("%s\n", gearman_worker_error(worker)); break; } } }
/* register function on worker */ int worker_add_function( gearman_worker_st * worker, char * queue, gearman_worker_fn *function) { gearman_return_t ret; ret = gearman_worker_add_function( worker, queue, 0, function, NULL ); if ( ret != GEARMAN_SUCCESS ) { gm_log( GM_LOG_ERROR, "worker error: %s\n", gearman_worker_error( worker ) ); return GM_ERROR; } return GM_OK; }
int main() { gearman_worker_st worker; gearman_worker_create(&worker); gearman_worker_add_server(&worker, "localhost", 0); gearman_worker_add_function(&worker, "parser", 0, do_parse, NULL); while (1) { gearman_worker_work(&worker); } }
int main(int argc, char *argv[]) { gearman_benchmark_st benchmark; int c; char *host= NULL; in_port_t port= 0; char *function= NULL; uint32_t count= 0; gearman_return_t ret; gearman_worker_st worker; benchmark_init(&benchmark); if (gearman_worker_create(&worker) == NULL) { fprintf(stderr, "Memory allocation failure on worker creation\n"); exit(1); } while ((c = getopt(argc, argv, "c:f:h:p:v")) != -1) { switch(c) { case 'c': count= (uint32_t)atoi(optarg); break; case 'f': function= optarg; ret= gearman_worker_add_function(&worker, function, 0, worker_fn, &benchmark); if (ret != GEARMAN_SUCCESS) { fprintf(stderr, "%s\n", gearman_worker_error(&worker)); exit(1); } break; case 'h': host= optarg; ret= gearman_worker_add_server(&worker, host, port); if (ret != GEARMAN_SUCCESS) { fprintf(stderr, "%s\n", gearman_worker_error(&worker)); exit(1); } break; case 'p': port= (in_port_t)atoi(optarg); break; case 'v': benchmark.verbose++; break; default: usage(argv[0]); exit(1); } } if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) { fprintf(stderr, "signal:%d\n", errno); exit(1); } if (host == NULL) { ret= gearman_worker_add_server(&worker, NULL, port); if (ret != GEARMAN_SUCCESS) { fprintf(stderr, "%s\n", gearman_worker_error(&worker)); exit(1); } } if (function == NULL) { ret= gearman_worker_add_function(&worker, GEARMAN_BENCHMARK_DEFAULT_FUNCTION, 0, worker_fn, &benchmark); if (ret != GEARMAN_SUCCESS) { fprintf(stderr, "%s\n", gearman_worker_error(&worker)); exit(1); } } while (1) { ret= gearman_worker_work(&worker); if (ret != GEARMAN_SUCCESS) { fprintf(stderr, "%s\n", gearman_worker_error(&worker)); break; } if (count > 0) { count--; if (count == 0) break; } } gearman_worker_free(&worker); return 0; }