我想使用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并单独包含这些文件,但是它显示了其他依赖项的错误。如果我可以使用它会很棒。
答案 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