【发布时间】:2011-08-11 21:42:26
【问题描述】:
这个一般性话题之前出现过,here、here、here,毫无疑问,互联网上的其他地方也是如此。在我的情况下,与这些不同的是,挂起是由永远不会收到消息的阻塞套接字引起的,也许这就是那里描述的解决方案对我不起作用的原因。我正在开发一个 C++ 应用程序,它通过本地套接字连接与 php 脚本通信,当 C++ 应用程序崩溃时,它让 php 脚本的套接字等待一条永远不会出现的消息。我尝试过使用 session_destroy 和 session_unset(在 session_start 之前的脚本中首先调用它们)但它们不起作用;即使退出并重新启动浏览器也无济于事。如果我删除 session_start,重新加载脚本然后通过客户端结束会话,我只能停止会话。我怎样才能在不经历的情况下终止会话?
编辑:我忘了提,我也试过用
socket_set_option($socket,0, SO_RCVTIMEO, array("sec"=>1, "usec"=>0));
但我收到“无效操作”错误,但它不起作用。
编辑 2:按照提示 here 设置手动超时,效果很好。一般来说,我仍然不知道如何杀死一个会话,例如陷入了无限循环,但还好。
【问题讨论】:
-
好的,现在值 1 我不知道,问题是什么:)
-
@levu 看起来这个选项甚至还没有设置好。你不能为本地套接字设置 SO_RCVTIMEO 吗?我看不出我的语法有什么问题。 '0' 作为协议适用于 socket_create。
标签: php sockets session freeze