我正在使用 Windows 7 上的 Apache websocket 模块。我使用了https://github.com/disconnect/apache-websocket上的“Disconnect”提供的代码,并按照指导成功编译它以在 Windows 7 上运行来自http://www.calazan.com/how-to-compile-and-build-apache-modules-on-windows-using-visual-studio/。我有一个名为“ws_switch_plugin”的关联插件,它是从 websocket 模块调用的,其方式与使用 Disconnect 的“echo”插件示例的方式相同。
我在 Xampp 1.8.3 安装中运行 Apache 2.4.7。我已经根据 Disconnect 的建议配置了 httpd.conf 文件。
我看到的奇怪情况是,Apache启动的时候,好像加载了四次websocket模块,每次都调用插件的“init”函数。在启动期间,插件的两个实例立即被销毁,但两个保持打开状态。从基于插件句柄的进一步调试,似乎只使用了最后一个创建的插件。当 Apache 停止时,两个未完成的插件都会被销毁。
下面是来自调试文件的列表,其中列出了断开连接 websocket 模块的函数名称,因为它们是从 Apache 调用的。当 Apache 启动时,它显示了四组函数调用,对应于 websocket 模块的四个明显负载。最后,当 Apache 停止时,它显示插件的两个实例被销毁。
谁能解释为什么会这样?我想了解并理想地了解是否有办法让 Apache 只加载一次模块。
(WHEN STARTING APACHE ...)
mod_websocket_register_hooks
mod_websocket_create_dir_config path NULL
mod_websocket_create_dir_config path /ws_switch_plugin
mod_websocket_create_dir_config apr_pcalloc OK
mod_websocket_conf_handler
plugin ws_switch_plugin_init
mod_websocket_conf_handler plugin handle 0079B2F0
mod_websocket_conf_handler response OK
mod_websocket_cleanup_config
DESTROY plugin
mod_websocket_register_hooks
mod_websocket_create_dir_config path NULL
mod_websocket_create_dir_config path /ws_switch_plugin
mod_websocket_create_dir_config apr_pcalloc OK
mod_websocket_conf_handler
plugin ws_switch_plugin_init
mod_websocket_conf_handler plugin handle 007A30C8
mod_websocket_conf_handler response OK
mod_websocket_register_hooks
mod_websocket_create_dir_config path NULL
mod_websocket_create_dir_config path /ws_switch_plugin
mod_websocket_create_dir_config apr_pcalloc OK
mod_websocket_conf_handler
plugin ws_switch_plugin_init
mod_websocket_conf_handler plugin handle 00410278
mod_websocket_conf_handler response OK
mod_websocket_cleanup_config
DESTROY plugin
mod_websocket_register_hooks
mod_websocket_create_dir_config path NULL
mod_websocket_create_dir_config path /ws_switch_plugin
mod_websocket_create_dir_config apr_pcalloc OK
mod_websocket_conf_handler
plugin ws_switch_plugin_init
mod_websocket_conf_handler plugin handle 00418050
mod_websocket_conf_handler response OK
(WHEN STOPPING APACHE ...)
mod_websocket_cleanup_config
DESTROY plugin
mod_websocket_cleanup_config
DESTROY plugin