【问题标题】:how to run php script as daemon如何将 php 脚本作为守护进程运行
【发布时间】: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


【解决方案1】:

也许这个页面可以帮助你:PHP Command line usage:

php -f somefile.php

那么也许您需要创建一个 bash 脚本并添加到守护程序。如解释in this page

问候

凤凰零

【讨论】:

  • 这从命令行执行;这与作为守护进程运行不同。
  • @CamilStaps。你说得对。需要扩展我的答案。只需要创建一个哈希脚本并将其添加到守护程序。 stackoverflow.com/questions/19233529/run-bash-script-as-daemon
  • 嗨@PhoenixzeroX 它将保持脚本加载在内存中,即我所有的对象实例化将执行一次,还是每次请求都会实例化内存中的对象
猜你喜欢
  • 2011-01-03
  • 2013-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-02
  • 1970-01-01
相关资源
最近更新 更多