2009-06-05 9 views
3

大規模なPDFファイルを生成するPHPプロジェクトを継承しました。通常、数千ページに及ぶ数のサーバーメモリと数千ギガのサーバーメモリを使用した後にチョークします。このプロジェクトでは、PDFLibを使用して「メモリ内に」これらのファイルを生成していました。PDFHibリソースでファイルをフラッシュしない

私はこれを修正することを任されました。そのため、私がやったのは、PDFLib出力をメモリに構築するのではなくファイルに送ることでした。問題は、まだPDFメモリを構築しているようだ。そして、メモリの多くは決してOSに返されないようです。結局のところ、全体が窒息して死にます。

大きなPDFのスニペットのみをビルドしてプログラムを処理すると、データがend_document()のファイルに完全にフラッシュされていないようです。エラーは発生しませんが、PDFは読み込み不可能で、16進エディターで開くとストリームが不完全であることが明らかになります。

私は誰かが同様の困難を経験したことを期待しています。

+0

Q:サーバーが数千ページのPDFドキュメントを生成するか、またはサーバーが数千のPDFファイルを生成しますか? PHPプログラムのCLIですか、Webベースですか?それはどうやって始まりますか?そしてそれはどれくらい長くメモリに保存されていますか? – 0scar

+0

多くのページ、多くのPDFはありません。 ApacheのWebベース(mod_php)です。いくつかのメモリが返されます。サーバの再起動時までメモリは返されません。 –

答えて

2

解決済み!それぞれのテキストフローでPDF_delete_textflow()を呼び出す必要がありました。文書のスコープが指定されていて、文書が閉じられるまで捨て去ることはありませんでした。

1

各ページを閉じてドキュメントを閉じることを確認する必要があります。これは、書き込まれたページの最後に "end_page_ext"を呼び出すことによって行われます。

さらに、別のPDFからページをインポートする場合は、各ページの後に「close_pdi_page」を呼び出し、インポートした各ドキュメントが終了したら「close_pdi_document」を呼び出す必要があります。

関連する問題