【发布时间】:2015-03-21 22:27:36
【问题描述】:
我有这个 PHP 应用程序,它的启动非常复杂。我受到 nodejs 工作方式的启发(该应用程序是实时的,无需像 PHP 那样加载和卸载即可为客户端提供服务)。
对于每个请求,apache 加载脚本,实例化类和对象(我有很多,因此启动是资源密集型的)并执行它,然后卸载它(多么浪费),并为下一个请求。
在 Nodejs 中,整个会话的脚本被加载到内存中,并且每个请求的代码从头到尾执行,每个请求都没有加载脚本,请求结束时也没有卸载。
是否可以使用 linux 守护程序来完成相同的操作。我将在 AWS Elasticbeanstalk 上部署它。
示例 PHP 代码
<?php
echo "Hello " . $_SERVER["REMOTE_ADDR"];
//followed by a series of instantiation of several classes and objects at startup
//would like to have them instantiated only once, keep in memory and then executed
//based on the URL onwards from there
//just like how nodejs works
?>
【问题讨论】:
-
如果启动很复杂,我会将状态存储在会话、数据库、文本文件等中。但是,似乎一切皆有可能:github.com/shaneharter/PHP-Daemon
-
嗨 Jeroen,这不是状态,它实际上是类和对象的实例化及其相互链接,因此启动计算量很大,相反我希望只执行一次实例化和基于 url 的请求从那里执行,我想知道 nodejs 示例及其工作原理是否提供了一个想法
-
在 nodejs 中要容易得多,因为它基本上是 apache 和 php 合二为一;它运行自己的网络服务器,处理请求等。请注意,对于 php 和 apache,php 不会接收 http 请求,而 apache 会。
-
知道了...所以有没有一种方法可以让 apache 和 php 的行为像 nodejs 一样,我希望我的所有 PHP 对象只实例化一次,然后从 apache 接收 url 参数并通过入口点从那里开始执行。
-
你检查过我第一条评论中的链接了吗?这似乎可以满足您的需求。
标签: php linux amazon-ec2 daemon