我正在开发一个基于 MSN 协议(protocol)的简单聊天 Web 应用程序。服务器通过 fsockopen()
返回的文件资源与 MSN 服务器通信。客户端通过 XMLHttpRequest
访问服务器。服务器最初登录,并打印出客户端通过 XMLHttpRequest
对象的 responseText ()
接收的联系人列表(以 HTML 表格式)。
问题来了。负责与 MSN 服务器通信的文件资源必须保持事件状态,以便所有与聊天相关的功能正常工作(创建对话、跟踪离线/在线状态更改等)。但是,为了使 XMLHttpRequest
完成,PHP 脚本必须完成执行。这意味着客户端在聊天 session 进行时不会从 XMLHttpRequest
获得任何响应。
更糟糕的是文件资源无法序列化,这意味着我不能简单地将聊天 session 存储在 $_SESSION []
占位符中。
那么,我的问题是,是否有任何可能的方法将文件资源从一个文件“转移”到另一个文件?
最佳答案
在大多数语言中,不可能在应用程序之间传递文件句柄——据我所知,大多数操作系统也不允许。
解决方案是让服务器进程作为守护进程运行——这意味着它需要在网络服务器之外运行。
见
http://symcbean.blogspot.com/2010/02/php-and-long-running-processes.html
和
http://www.phpclasses.org/browse/package/5758.html
C.
关于php - PHP 中的文件资源持久性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2234239/