0

PHP でオンザフライで生成され、ブラウザに出力される非常に大きな画像があります。(幅 5000 ピクセル、高さ 1000 ~ 2000 ピクセルです。これは、私のサイトでの毎日のユーザー アクティビティのプロットです)。

問題は、最近ではプロットが大きすぎて、PHP スクリプトがメモリ不足のエラーを出し (生成された PNG 自体が非常に小さいため)、これが原因で画像を取得できないことです。

PNG形式のGDを使用して、この大きな画像を複数の部分に出力する方法はありますか?

(ps: サイトを実行しているホストはセーフ モードを使用しているため、構成を変更できず、デフォルトの PHP インストールを使用していると思います。)

EDIT1: 管理スクリプトです。私以外のユーザーはそれを見ません。

EDIT2: サンプル画像はこちら: http://users.atw.hu/calmarius/trash/wtfb2/x.png (IP アドレスでトラックをグループ化するオプションもあります。)

すべてのユーザーと IP のペアには、プロット上に独自の 24 時間のトラックがあります。また、すべての緑色のマークはユーザー アクティビティを示します。ご覧のとおり、この画像はトラックごとに出力できます。また、すべてを一度に出力して生成する必要はありません。

このウェブサイトはオンライン ストラテジー ゲームであり、将来的にはこのグラフを使用して複数アカウントの検出を容易にしたいと考えています。(1つしか持っていないアカウントよりも複数のアカウントを登録して利益を得ようとしているユーザー.)しかし、これは別の問題です.

データベースからリクエストログをエクスポートしてダウンロードし、プロットを作成するプログラムにデータをフィードするのが面倒なので、PHP スクリプトを使用しています。;)

4

2 に答える 2

2

画像を処理する前に、メモリ制限を無制限に設定してください。

ini_set('memory_limit', '-1');
于 2011-03-29T09:17:24.023 に答える
0

画像 (GD ライブラリ、ImageMagick) を生成する方法と、それを出力する方法を教えてください。ファイルをディレクトリに保存してから readfile() を使用して出力していますか? はいの場合、fopen / fread / echo の組み合わせは、readfile() を使用してファイルをブラウザーに出力するよりも約 50% ~ 60% 高速です。gzip 圧縮を使用していますか? PHP実行の制限時間は?表示される正確なエラー メッセージは何ですか?

于 2011-03-29T09:31:57.210 に答える