【问题标题】:A way to share the return value of fsockopen() between multiple pages?一种在多个页面之间共享 fsockopen() 的返回值的方法?
【发布时间】:2010-04-25 10:20:10
【问题描述】:

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

另一个问题,fsockopen 的超时时间是多少,或者连接是否保持活动状态。调用它的原始php脚本已关闭?

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

【问题讨论】:

    标签: php session


    【解决方案1】:

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

    【讨论】:

    • 你确定它是整数吗?
    • 不,我不是,我只是想指出,当您退出创建页面时,您在页面之间保存的对象是没有意义的。很抱歉有不准确之处。
    【解决方案2】:

    fsockopen 正在打开一个网络套接字。

    当打开该套接字的 PHP 脚本结束时,由它打开的套接字会丢失:您不能从另一个脚本重新使用它们。

    如果您希望多个不同的页面使用该套接字,除了为每个脚本重新打开它之外别无他法,即使这需要时间。


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

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

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

    但请注意,使用守护进程和所有这些可能需要您访问服务器的命令行:您将无法做到(或者做得不好)如果您只从 Apache 运行 PHP,那么所有这些。

    【讨论】:

      猜你喜欢
      • 2016-07-10
      • 1970-01-01
      • 1970-01-01
      • 2013-04-22
      • 1970-01-01
      • 2018-11-06
      • 1970-01-01
      • 2020-07-03
      • 1970-01-01
      相关资源
      最近更新 更多