Я работаю над проектом с использованием фреймворка PHP и Yii2. У него есть задача, которая требует много запросов для получения данных через API, и для этого требуется всего одна минута. Чтобы избежать ожидания пользователя, я попытался использовать функцию exec () и перенаправить вывод в другой файл. Чтобы сделать лучше UX
Я попробовал этот код в отдельных файлах PHP (за пределами Yii), и он отлично работает.
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 $url
и ожидаем, что php проанализирует его. пытаться curl -O $url
,
Но лучше дополнить исходную проблему («избегайте ожидания пользователя»), попробуйте реализовать «очередь».
Других решений пока нет …