我使用這個類:導出CSV使用PHP和PostgreSQL
<?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文件而不會重載? 或者在我的程序中有什麼不對?
對不起,我的英語。
謝謝
嘗試創建該文件,然後將數據逐行添加到它,我認爲致命錯誤正在顯示,因爲您持有數組$ saida的數據量。 –
你能告訴我一個例子嗎? – Dayaners