【发布时间】:2010-11-28 15:52:15
【问题描述】:
我假设对于每个页面请求,网络服务器(例如 Apache)都会在内存中创建一个新的脚本实例。这些实例在运行时可以相互通信吗?并传递数据?
【问题讨论】:
标签: php scripting webserver communication data-transfer
我假设对于每个页面请求,网络服务器(例如 Apache)都会在内存中创建一个新的脚本实例。这些实例在运行时可以相互通信吗?并传递数据?
【问题讨论】:
标签: php scripting webserver communication data-transfer
如果你想在 PHP 中的脚本之间传递数据,我建议使用 memcached 或数据库。或者可能是 APC。
如果脚本属于同一个会话,理论上它们可以通过会话进行通信,但在大多数情况下这实际上是一种单向通信,因为在任何时候只有一个脚本可以访问会话(session_start() 会锁定会话,直到该脚本隐式或显式结束会话)。
【讨论】:
PHP 脚本运行的模型实际上并不包含这些脚本在内存中的任何类型的持久性的概念,因为通常它们被设计为只运行服务请求页面所需的最短时间。这将使这些脚本之间的状态通信很难有任何有意义的用途,因为通常一旦页面被提供,脚本就没有什么可以做的了。因此,通常 PHP 脚本之间的任何通信都更多地通过操作数据库条目等来完成。
如果您需要进行某种持续处理,并且您希望为其传递数据,您可能需要研究其他 Web 应用程序模型,例如 servlet。
【讨论】:
您应该能够使用一些共享内存来执行此操作,如下所述:http://blog.taragana.com/index.php/archive/how-to-use-shared-memory-in-php/(假设您没有在 Windows 上运行)
【讨论】:
我相信 Martin 和 Cletus 的建议是有效的。我的选择是脚本的最终目标。
这些脚本会在不同的服务器上运行吗?
平面文件,带有锁定机制
我认为您将通过外部化流程获得最大价值,因为您可以拥有不止一台机器来管理消息/数据并不止一台生产/使用它们。
【讨论】: