我正在使用这个类:

<?php

class csv{
private $separador;
private $cabecalho;
private $dados;
private $path;
private $arquivo;

public function csv($separador=null, $cabecalho=null, $dados="", $path="", $arquivo="csv"){
    #seta as propriedades
    $this->separador = $separador;
    $this->cabecalho = $cabecalho;
    $this->dados = $dados;
    $this->path = $path;
    $this->arquivo = $arquivo;
}
public function salvar(){
    #gera string de cabeçalho
    $colunas = "";
        foreach($this->cabecalho as $coluna){
            if ($colunas == ""){
            $colunas .= $coluna;
            } else {
            $colunas .= $this->separador.$coluna;
            }
        }
    $saida[] = $colunas;
    #gera string do corpo do arquivo
    foreach ($this->dados as $linha){
        #pega as variaveis do array
        $colunasDados = "";
        foreach($linha as $coluna){
            if ($colunasDados == ""){
            $colunasDados .= $coluna;
            } else {
            $colunasDados .= $this->separador.$coluna;
            }
        }
        $saida[] = $colunasDados;
}

    #verifica se alguma linha foi inserida
    if(count($saida)>1){
        #monta o corpo do CSV
        $corpo = implode("\n", $saida);
        #abre um arquivo para escrita, se o arquivo não existir ele tenta criar
        $fp = fopen ($this->path.$this->arquivo.".csv", "w");// W = sobrescreve
        if($fp <> NULL){
            #escreve no arquivo
            fwrite($fp, $corpo);
            #fecha o arquivo
            fclose($fp);
            #retorno do sistema
            echo "<p>Pronto</p>";
                        }
            else {
            echo "<p>Verifique se a pasta ou o arquivo tem permissão para escrita!</p>";
                    }
     }
      else {
        echo "<p>Sem linhas para importação!</p>";
            }
    }

导出csv文件。
这是我的旋转文件:
 <?php
#chama classe
include("program.class.php");
$objeto = new csv();
#Executa os selects
$tijuca = $objeto->selecionaTijuca();
#gera cabeçalho
$cabecalho = array("mes","ano","titulobanco","matricula");
#cria instancia de objeto da classe
$tijuca = new CSV (";", $cabecalho, $tijuca,"pasta/Nova/", "cotas");
$tijuca->salvar();

?>
我的记忆力有问题:
Fatal error: Allowed memory size of 524288000 bytes exhausted (tried to allocate 262144 bytes) in .../program.class.php on line 42

我已经看到了一些能够使用此命令编辑php内存的解决方案:
ini_set("memory_limit","500M");

但它不能解决问题,并使我的服务器超载。
有人知道如何在不重载的情况下导出csv文件吗?
或者我的程序里有什么问题?
对不起我的英语。
谢谢你

最佳答案

看看postgresqlcopy命令。它可以选择直接输出CSV。

08-05 16:16