【[c/c++]为nginx写的一个管理程序】看过《2011中国PHP技术高峰论坛:PHP在金山游戏运营中的应用》中的介绍,觉得为项目发开中的每一个成员配置相同的开发环境,项目结构,测试环境等等内容显得十分重要。于是就有了如何为别人部属一整套完整开发环境的想法。方案是有了,就是使用之前打成安装包的wamp框架进行修改,将Apache换成Nginx服务,并将项目目录结构配置也一并写进去。如此一来,别人要做的只是选择安装的目录,一路的Next下去,最终可以保证每一个成员的开发环境和配置都是一模一样的。
由于Nginx不同于Apache,无法添加到windows系统服务里,而且php-cgi启动的时候,无法隐藏那个控制台窗口。使用起来多有不便,于是就自己用C语言编写了以下的程序,为这个WNMP环境开发一个控制器出来,以实现:启动,停止,重启,重载Nginx配置等接口。
以下将完整代码记录以此,于免丢失。
#include char *nginx_path = "//bin//nginx";
char *nginx_app = "nginx.exe";
char *php_path = "//bin//php";
char *php_app = "php-cgi.exe";
void run_app (char *path, char *appName, char *param) { char filepath[MAX_PATH], filename[MAX_PATH];
GetCurrentDirectory(MAX_PATH, filepath);
strcat(filepath, path);
strcpy(filename, filepath);
strcat(filename, "//");
strcat(filename, appName);
ShellExecute(NULL, NULL, appName, param, filepath, SW_HIDE);
} void taskkill (char *appName) { char param[50];
strcpy(param, "/c taskkill /IM ");
strcat(param, appName);
strcat(param, " /F");
ShellExecute(NULL, NULL, "cmd.exe", param, NULL, SW_HIDE);
} /** * void server_stop () * 停止服务 */ void server_stop () { run_app(nginx_path, nginx_app, "-s stop");
taskkill(php_app);
} /** * void server_start () * 启动服务 */ void server_start () { run_app(nginx_path, nginx_app, NULL);
run_app(php_path, php_app, "-b 0.0.0.0:9000 -q");
} int main (int argc, char *argv[]) { if (argc < 2) return 1;
//停止服务 if (strcmp(argv[1], "stop")==0) { server_stop();
} //启动服务 if (strcmp(argv[1], "start")==0) { server_start();
} //重启服务 if (strcmp(argv[1], "restart")==0) { server_stop();
Sleep(2);
server_start();
} //重新加载nginx配置文件 if (strcmp(argv[1], "reload")==0) { run_app(nginx_path, nginx_app, "-s reload");
} return 0;
}
文章图片
推荐阅读