使用composer为Supervisor安装PHP库

时间:2016-01-09 04:30:39

标签: php supervisord

我想使用Supervisor来管理我的流程。我已经将它安装在我的Amazon Linux机器上,并且基本设置根据配置文件运行良好。

现在,我想动态更改进程。因为它需要每次更改配置文件并重新启动,所以使用PHP库来做同样的事情似乎是个不错的选择。

具体来说,我正在通过SupervisorPHP config动态更改配置,并通过PHP将SupervisorPHP更改为经理Supervisor。

按照SupervisorPHP config的自述文件,我通过composer

安装了它
composer require supervisorphp/configuration

我复制了示例代码

<?php
    use Supervisor\Configuration\Configuration;
    use Supervisor\Configuration\Section\Supervisord;
    use Supervisor\Configuration\Section\Program;
    use Indigophp\Ini\Rendere;

    $config = new Configuration;
    $renderer = new Renderer;

    $section = new Supervisord(['identifier' => 'supervisor']);
    $config->addSection($section);

    $section = new Program('test', ['command' => 'cat']);
    $config->addSection($section);

    echo $renderer->render($config->toArray());

当我运行此代码时,出现以下错误:

PHP Fatal error:  Class 'Supervisor\Configuration\Configuration' not found in test.php on line 7

我还尝试克隆了repo并单独包含这些文件,但是它显示了其他依赖项的错误。如果我可以使用它会很棒。

1 个答案:

答案 0 :(得分:1)

上述代码中有2个错误。

第一个错误是你不使用作曲家提供的自动加载器,这样php就可以找到必要的类。为此,只需添加require __DIR__ . '/vendor/autoload.php';(如果供应商文件夹位于相对于示例脚本的不同路径中,则相应地进行调整)。

第二个错误在Indigophp的使用声明中。除了Renderer这个词中明显的拼写错误之外,如果你查看Indigo的来源,你会发现它必须是use Indigo\Ini\Renderer;

因此,测试安装的正确代码是:

<?php
require __DIR__ . '/vendor/autoload.php';

use Supervisor\Configuration\Configuration;
use Supervisor\Configuration\Section\Supervisord;
use Supervisor\Configuration\Section\Program;
use Indigo\Ini\Renderer;

$config = new Configuration;
$renderer = new Renderer;

$section = new Supervisord(['identifier' => 'supervisor']);
$config->addSection($section);

$section = new Program('test', ['command' => 'cat']);
$config->addSection($section);

echo $renderer->render($config->toArray());

运行上面的代码,你应该得到以下输出:

[supervisord]
identifier = supervisor

[program:test]
command = cat