一种在多个页面之间共享fsockopen()返回值的方法?

时间:2010-04-25 10:20:11

标签: php session

即时通讯在我的php脚本中使用连接到服务器,用fsockopen()打开,我希望它在不同的页面之间共享,所以我序列化它并将其保存在会话变量中,但似乎这是一个坏主意因为当我这样做时没有任何反应...... 甚至没有错误。 问题是这个连接需要握手,所以每次都不能重新连接

另一个问题,fsockopen的超时是什么,或者连接是否保持活跃状态​​。调用它的原始php脚本是关闭的吗?

编辑:// 我有一个运行很长时间的脚本,所以它可以保持打开,但我最初的问题,我可以通过$ _Session共享句柄,如果是,我需要序列化吗? 因为如果我回显句柄它不是一个整数

2 个答案:

答案 0 :(得分:3)

您无法将其保存在会话数据中,当打开PHP脚本返回时,进程“死亡”并且您的套接字随之而来。您可以保存句柄中的整数值,但在下载并运行下一页时它将不再有效。

答案 1 :(得分:2)

fsockopen正在打开网络套接字。

当打开该套接字的PHP脚本结束时,它打开的套接字丢失:您无法从其他脚本重用它们。

如果你想要几个不同的页面来使用那个套接字,除了为每个脚本重新打开它之外别无他法,即使需要时间。


另一个(更复杂的)解决方案可能是:

  • 一个在后台运行作为守护程序并连接到远程服务的脚本
  • 该脚本始终在运行(或者,至少在很长一段时间内)
  • 其他脚本向该守护程序发送信息,而不是尝试连接到服务
  • 并且始终连接的守护程序将这些信息发送到它所连接的远程服务

它有点复杂,正如我所说......但它应该可以很好地工作: - )

请注意,使用守护程序以及所有可能需要您访问服务器命令行的内容:您将无法执行(或者不那么好)如果您只从Apache运行PHP,那就完全了。

相关问题