###前提・実現したいこと
centos6 + php5.6 + PHPExcel 1.8.0 でエクセルファイルを作成したときに、ごくまれに破損したエクセルファイルが作成されるのを検知したい。
###発生している問題・エラーメッセージ
PHPExcelで破損したエクセルファイルを読み込ませると、例外も発生せず、タイムアウトするまでずっと load 処理を抜けない状況になります。サーバーからダウンロードしてエクセルで開いてみると、下記のようなメッセージが表示されます。
###該当のソースコード
エクセルファイルの読み込み処理は下記です(例外処理省いています)
php
1$reader = PHPExcel_IOFactory::createReader('Excel5'); 2//$filenameにエクセルファイルのパスが入っています。 3//破損しているファイルの他は、正常に読み込めています。 4$excel = $reader->load($filename);
###試したこと
set_time_limitで最大実行時間を設定する方法では例外がキャッチできず対応できませんでした。
そもそもエクセルファイルが破損する原因がわかっていませんが、メモリ1GBのVPSでcronで約2分ごとに作成するレポートファイルのため、メモリ不足とかそういうことかもしれません。性能の良いマシンに交換すれば解決する問題かもしれませんが、根本的な問題解決になりません。
破損したエクセルファイルを判定する方法など、よい解決方法をご存知の方がいらっしゃいましたら、ご教示いただければ幸いです。
よろしくお願い致します。
###補足情報(言語/FW/ツール等のバージョンなど)
centos6 + php5.6 + PHPExcel 1.8.0
回答3件
あなたの回答
tips
プレビュー