ホームページ  >  記事  >  バックエンド開発  >  phpexcel が大きなファイルを処理するときにメモリを大量に消費する問題の解決策を探しています。

phpexcel が大きなファイルを処理するときにメモリを大量に消費する問題の解決策を探しています。

WBOY
WBOYオリジナル
2016-06-13 12:07:091504ブラウズ

大きなファイルを処理するときにphpexcelがメモリを大量に消費する問題の解決策を探しています
phpexcelのメモリ処理メカニズムにより、Excelファイル内の行または列が多すぎると、占有されるメモリが数百になります。サーバーのメモリの問題により、それ以上のMBを申請することはできません。たとえば、Excelファイルまたはシートページの1つを処理した後、メモリを解放するなど、根本的な解決を試みるしかありません。次のプロセスをインターネットで調べましたが、誰も詳しく書いておらず、マスターの助けを本当に楽しみにしています。 。

追記:
1. 私が使用しているバージョンは 1.76 で、ファイルの使用などのパラメータを設定しましたが、まったく機能しません
2. 小さなファイルが調整されました。 🎜>3. 上 メモリ制限の増加については説明する必要はありません




Excel コードは次のとおりです: 実行エラー

致命的なエラー: E:wampwwwuploadifyPHPExcel.php の 796 行目でオブジェクト コンテキストにないときに $this を使用します
function parse_excel_file($filename)
{
$php_reader = new PHPExcel_Reader_Excel2007();
$php_reader = PHPExcel_IOFactory::creat eReaderForFile( $filename);
$php_excel = $php_reader->load($filename);
$current_sheet = $php_excel->getSheet(0);
$all_column = $current_sheet->getHighestColumn( );
$all_row = $current_sheet->getHighestRow();
$list = array();
for ($row_index = 2; $ row_index {
$row_val = '';
for ($col_index = 'A'; $col_index {
$addr = $col_index . $row_index;
$cell = $current_sheet->getCell($addr)->getValue();
if ($cell instanceof PHPExcel_RichText)
{
$cell = $cell->__toString( );

$row_val = $row_val . ',' . $cell;
}
array_push($list, $row_val);
}

PHPExcel:: Destroy(); return $list;
}

次のコードを phpexcel.php に追加します:
public function Destroy() {
foreach($this-> ;_workSheetCollection as $index => $dummy) {
$this->_workSheetCollection[$index]->Destroy();
$this ->_workSheetCollection[$index] = null;
}
}

次のコードを worksheet.php に追加します。
public function Destroy() {
foreach($this) ->_cellCollection as $index => $dummy) {
$this->_cellCollection[$index] = null;
}
}


--- ---ソリューションのアイデア--------- -------------一度にエクスポートできるアイテムの数はいくつですか?

------解決策----------------------呼び出しメソッドは次のようにする必要があります: $php_excel - >Destroy();

phpexcel ライブラリはメモリを大量に消費するため、すべての計算はメモリにキャッシュされます
ini_set('memory_limit','1024M') は 1W 個のデータしかエクスポートできませんでした ついにCSVストリーミングファイルを使用して、世界はずっと静かになりました


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。