3

我正在开发一个使用 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 动作中起作用?

是否有替代方法来实现这一点

谢谢

4

1 回答 1

1

你不能执行喜欢php $url并期望 php 来解析它。试试curl -O $url

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

于 2015-02-20T01:50:26.823 回答