【问题标题】:Symfony2 Process::start() fails when running in production environmentSymfony2 Process::start() 在生产环境中运行时失败
【发布时间】:2015-03-31 22:07:19
【问题描述】:

我正在使用 Symfony2 Process 组件来触发一个生成相当大的报告的 cli 脚本。此时我正在使用 ajax 来监视它的进度并在前端显示进度条填充。在 app_dev.php 中执行以下代码时,它运行完美,没有任何问题。但是,当我在生产中运行它时,它无法启动 Process()。

这是我的代码:

public function generateAction($reportSlug)
    {
        $this->wrangler->addMoodleGlobal('CFG');
        $time = time();

        $commandSlug = "report:{$reportSlug}";
        $console = $this->container->get('kernel')->getRootDir() ."/console";

        $process = new Process("exec php {$console} {$commandSlug} {$time} > /dev/null 2>/dev/null &");

        $process->start();

        return $this->renderJson(json_encode(array(
            'success' => true,
            'message' => "php {$console} {$commandSlug}",
            'time' => $time
        )));
    }

我已经运行php app/console cache:clear --env="prod"

还有php app/console cache:warmup --env="prod"

bot 无济于事。

谢谢。

【问题讨论】:

  • 它是共享主机服务吗?有时共享托管服务不允许执行某些进程,我在托管程序中遇到了这个问题....

标签: php symfony exec command-line-interface


【解决方案1】:

当我更改线路时,不确定真正的问题是什么

$process = new Process("exec php {$console} {$commandSlug} {$time} > /dev/null 2>/dev/null &");

使用临时输出文件:

$process = new Process("exec php {$console} {$commandSlug} {$time} > /tmp/output.log 2>/tmp/output.log &");

一切都开始正常工作。任何人都可以对此有所了解吗?

【讨论】:

    猜你喜欢
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 2011-03-20
    • 2016-10-22
    相关资源
    最近更新 更多