【发布时间】:2013-05-07 00:09:11
【问题描述】:
当我使用proc_open 时,它返回一个表示为Resource id #4 的资源句柄。这段代码在服务器上运行,我想再次使用 id 使用这个“句柄”。但是在客户端和服务器之间进行了某种数据传输之后,我得到的只是资源的 id,Resource id #4,而不是指针。
是否可以使用唯一的 id 重新创建资源?
【问题讨论】:
标签: php proc-open resource-id
当我使用proc_open 时,它返回一个表示为Resource id #4 的资源句柄。这段代码在服务器上运行,我想再次使用 id 使用这个“句柄”。但是在客户端和服务器之间进行了某种数据传输之后,我得到的只是资源的 id,Resource id #4,而不是指针。
是否可以使用唯一的 id 重新创建资源?
【问题讨论】:
标签: php proc-open resource-id
不,这永远不会可靠地工作,因为在新请求中,您甚至不知道资源是否仍然可以访问 - 在像 Apache 这样的预分叉环境中,第二个请求可能由完全不同的进程执行,其中访问在操作系统级别上,相同的资源是不可能的。此外,在集群和/或负载平衡环境中,第二个请求甚至可能最终在完全不同的服务器上。
【讨论】:
proc_open创建的进程在我使用proc_close之前不应该关闭,因此该进程仍在运行。那么,当它的进程 id 可以访问时,是否可以使用该进程或创建一个新的句柄?
Resource 只是正在运行的 PHP 实例的本地内容。如果您想在服务器上存储一段时间有效的内容,请按照上面的建议使用PID。
STDIN 将字符串输入到进程正在运行的程序并从STDOUT检索结果