问与答 PHP脚本执行时间过长被中断

randal · 2019-02-26 09:45:36 · 热度: 266

详细描述:

前端上传Excel表格->PHP读取表格获取表格最大行号->for循环解析表格中的数据->在for循环体内组装参数请求外部api接口->所有请求成功后执行后续代码

现在的问题是昨天有个用户上传的表格有1000多条数据 现在for循环体就会请求1000多次接口 导致执行时间过长 for循环被中途中断 下面是代码示例 请问这种情况该怎么解决?

$file =input('post.avatar');

    if(!$file){

        $this->error('请上传需要导入的表格!支持csv,xls,xlsx格式!');

    }

    $filePath = ROOT_PATH . DS . 'public' . DS . $file;

    if (!is_file($filePath)) {

        $this->error('上传的表格不存在,请核实');

    }

    $PHPReader = new \PHPExcel_Reader_Excel2007();

        if (!$PHPReader->canRead($filePath)) {

            $PHPReader = new \PHPExcel_Reader_Excel5();

        if (!$PHPReader->canRead($filePath)) {

            $PHPReader = new \PHPExcel_Reader_CSV();

            $PHPReader->setInputEncoding('GBK');

            if (!$PHPReader->canRead($filePath)) {

                $this->error(__('Unknown data format'));

            }

        }

    }         

    for($i=2;$i<=$allRow;$i++){

        switch ($express_id) {

            case 1:

                //接口请求参数

                $post_info = [



                ];

                //请求接口

                $json = sendRequest('',$post_info,'POST');

                $return = json_decode($json,1);

                $code = $return['code'];

                if($code==0){

                    $return_data = $return['data'];

                    $taskid = $return_data['recordId'];

                    //处理成功时的业务逻辑

                    $result = [];

                    $result[$i] = [



                    ];

                    //更新用户信息

                    $yu_money = $yu_money-$total_fee;

                    \app\common\model\User::score($score=0,'-'.$total_fee,$uid,',编号'.$retu[$i]['id']);

                    $continue_num = $continue_num+1;

                }else{

                    $this->error($return['msg']);

                }

                break;

            default:

                # code...

                break;

        }

    }

    //循环结束执行业务逻辑
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册