【问题标题】:exec with In Yii2在 Yii2 中执行
【发布时间】:2015-02-19 21:27:04
【问题描述】:

我正在开发一个使用 PHP 和 Yii2 框架的项目。它有一项任务需要发出许多请求才能通过 API 获取数据,并且大约需要一分钟才能完成。为了避免让用户等待,我尝试使用 exec() 函数并将输出重定向到其他文件。打造更好的用户体验

我在单独的 PHP 文件(在 Y​​ii 之外)中尝试了这段代码,它运行良好。

exec("php process.php > output.php 2>&1 & echo $!", $output);

一旦我尝试使用以下方法在 Yii 中执行它,它就不起作用了。

public function actionIndex() {
    $url = Url::to(['user/dofile'], TRUE);
    exec("php $url > testoutput.php 2>&1 & echo $!", $output);
    return $this->render('index');
}

出现错误

Could not open input file: http://localhost/weez/frontend/web/index.php?r=user%2Fdofile

有没有办法让它在 Yii 动作中起作用?

有没有其他方法可以做到这一点

谢谢

【问题讨论】:

    标签: php parallel-processing yii2 yii2-advanced-app


    【解决方案1】:

    您不能像php $url 那样执行并期望 php 解析它。试试curl -O $url

    但是一个更好的选择来补充原始问题(“避免让用户等待”),尝试实现“排队”。

    【讨论】:

    • 谢谢@jovani。你的意思是像 RabbitMQ 那样使用队列吗?
    • 是的。但您也可以尝试查看 beanstalkd。 :) @Nabeel
    猜你喜欢
    • 2015-07-16
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多