代码之家  ›  专栏  ›  技术社区  ›  Brian Gottier

symfony转储服务器正在侦听,但在我转储时没有听到

  •  2
  • Brian Gottier  · 技术社区  · 6 年前

    我不是在symfony工作,而是通过composer拉入symfony/var dumper包,当我做一个简单的测试时,它工作得很好:

    <?php
    include 'vendor/autoload.php';
    dump('Hello World of Dumping');
    

    我可以在浏览器中看到输出。

    vardumper的symfony docs显示有一个“dump server”, https://symfony.com/doc/current/components/var_dumper.html#the-dump-server 我真的很想这样做。问题是,因为我没有使用symfony,所以我正在尽最大努力找出如何使用它。我确实拉了控制台包:

    composer require symfony/console --dev
    

    所以,在终端(Ubuntu)中,我运行这个命令:

    ./vendor/bin/var-dump-server
    

    当我这样做时,终端显示:

    [确定]服务器正在侦听tcp://127.0.0.1:9912

    但是当我运行测试脚本并进行一些转储时,我在终端中看不到任何内容。没有变化。

    尽管这不起作用,但我真正想做的是记录到一个文件中。如果我尝试运行该命令并指定HTML格式和要转储的文件,它将创建该文件,但当我执行转储测试时,文件中不会放入任何内容:

    ./vendor/bin/var-dump-server --format=html > dump.html
    

    同样,它只是说服务器正在监听。

    现在,在您查看文档并告诉我我疯了之前,我知道文档将命令显示为:

    ./bin/console server:dump
    

    但我并没有使用symfony,我假设我必须这样才能使这个命令生效。我可能错了…

    所以,我在寻找有关转储服务器问题的帮助。也许dump服务器功能不能在symfony之外使用,但是我想知道这是不是真的,我在文档中没有看到这方面的证据。我希望你能帮忙,因为我不知道还能做什么/尝试什么。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Brian Gottier    6 年前

    symfony文档不完整。即使在高级使用页面上也没有对它的引用,但是需要使用ServerDumper类。这样简单的操作可以使转储服务器正常工作:

    <?php
    include 'vendor/autoload.php';
    
    use Symfony\Component\VarDumper\VarDumper;
    use Symfony\Component\VarDumper\Cloner\VarCloner;
    use Symfony\Component\VarDumper\Dumper\ServerDumper;
    
    VarDumper::setHandler(function ($var) {
        $cloner = new VarCloner();
        $dumper = new ServerDumper('tcp://127.0.0.1:9912');     
        $dumper->dump($cloner->cloneVar($var));
    });