Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的php脚本不能在我的站点中导出完整的csv文件?_Php_Csv - Fatal编程技术网

为什么我的php脚本不能在我的站点中导出完整的csv文件?

为什么我的php脚本不能在我的站点中导出完整的csv文件?,php,csv,Php,Csv,我使用php从我的站点导出csv文件,只能得到大约8k代码。 但是当我使用相同的php脚本从本地测试站点导出csv时,我可以得到完整的代码,大约500k。我确信网站中的数据库与我的本地pc测试数据库相同 function export(){ ini_set ('memory_limit', '32M'); $this->db->execute('set names utf8'); $result=$this->db->exe

我使用php从我的站点导出csv文件,只能得到大约8k代码。 但是当我使用相同的php脚本从本地测试站点导出csv时,我可以得到完整的代码,大约500k。我确信网站中的数据库与我的本地pc测试数据库相同

function export(){
        ini_set ('memory_limit', '32M');
        $this->db->execute('set names utf8');
        $result=$this->db->execute($this->query_sql);
        $csv_code='';
        $keys_line='';
        if($result->recordCount()>0){
            while(!$result->EOF){
                $v=$result->fields;


                // 标题行
                if($keys_line==''){
                    foreach($v as $k1=>$v1){
                        $keys_arr[]=$k1;
                    }
                    $keys_line=implode(',',$keys_arr);
                    $csv_code.=$keys_line;
                }

                // 内容行
                $values_arr=array();
                foreach($v as $k1=>$v1){
                    $str=preg_replace("@\s+@"," ",$v1); //替换换行
                    $str=preg_replace("@\"@","\"\"",$v1); //scv中需要将单个双引号转换成2个双引号
                    $str='"'.$str.'"';  // 用双引号括起来每个值
                    $values_arr[]=$str;
                }
                $values_line=implode(',',$values_arr);
                $csv_code.="\n".$values_line;
                $result->MoveNext();
            }
        }

        $filename = $this->csv_name.".csv";//文件名
        header("Content-type:text/csv");
        header("Content-Disposition:attachment;filename=".$filename);
        header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
        header('Expires:0');
        header('Pragma:public');
        $csv_code=iconv('UTF-8','GB2312//IGNORE',$csv_code);    //转码成gbk
        $csv_code=trim($csv_code);
        echo $csv_code;
        exit;

    }

若我删除这些代码,我可以在页面中获得所有数据代码,为什么

// $filename = $this->csv_name.".csv";//文件名
// header("Content-type:text/csv");
// header("Content-Disposition:attachment;filename=".$filename);
// header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
// header('Expires:0');
// header('Pragma:public');
// $csv_code=iconv('UTF-8','GB2312//IGNORE',$csv_code); //转码成gbk
// $csv_code=trim($csv_code);

您还没有显示任何代码。但若它非常慢,你们可能会遇到一个。不是时间限制,而是快速尝试在标题中添加内容长度。不确定也许你达到了记忆极限。。。在遍历数据之前,尝试回显标题,并回显数据,而不是将其累积到数组中。您可能还需要定期调用flush。