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

WBOY
リリース: 2016-06-13 12:07:09
オリジナル
1498 人が閲覧しました

大きなファイルを処理するときに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ストリーミングファイルを使用して、世界はずっと静かになりました


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!