调用接口 接口立马返回数据 后台继续执行
解决方案 写一个php执行的方法 可以看做为脚本
通过php执行linux命令的方式 去执行脚本即可 Linux后台添加一个进程
该方案就是在linux创建了一个进程
该方案适用于 php tinkphp3 tinkphtp5 tinkphtp5也有另外一种方式点击查看
popen('/www/server/php/74/bin/php index.php api/LklTask/lkl_split_one &','r');
使用 popen函数来执行linux命令
popen函数php可能会禁用 要打开这个函数 具体百度下
/www/server/php/74/bin/php //php的版本目录
index.php //tp框架的入口文件
api/LklTask/lkl_split_one ///要执行的方法(模块名/控制器/方法)
如果手动执行该命令一定要在项目的根目录下执行
具体是前端接口请求go_split改方法
public function go_split()
{
$php_configure_path = '/www/server/php/74/bin/php';
$disabled = explode(',',ini_get('disable_functions'));//获取禁用函数
if(in_array('popen',$disabled)){
exit('函数禁用le');
}
$output = [];
popen('/www/server/php/74/bin/php index.php api/LklTask/lkl_split_one &','r');
$this->ajaxReturn(V(1, '操作成功,请耐心等待'));
}
注意 popen中 &和r 不能丢掉

本文介绍了一种在PHP中实现异步任务处理的方法,利用popen函数执行Linux命令,在后台运行长时间的任务,确保前端接口快速响应,提升用户体验。
971

被折叠的 条评论
为什么被折叠?



