0

ローカル テキスト ファイルの内容を読み取り、配列に解析し、メイン ページ内のテーブルに入力するように設定された PHP ファイルを作成しました。ただし、このテキスト ファイルのわずか 53 行でも、コンテンツが表示される前にページを読み込むのに約 10 秒かかります。

これは、サーバーがクライアントに送信する前に html ファイル全体を作成する必要があるという制限であることを理解しています。この生成には、生成するコンテンツのサイズに応じて時間がかかります。つまり、この 10 秒は、より多くの行で処理する。最終製品には 500 をはるかに超える行が処理されるため、これを生成してクライアントに送信するのに数分かかります。

これをバイパスし、空のテーブルを保持する小さな html ファイルをクライアントに送信してから、PHP を使用してこのテーブルの入力と入力を開始できるかどうか疑問に思っていましたが、どうすればよいかわかりません。生成コードを呼び出す別のphpファイルにインクルードを呼び出すか、サーバーに一度に1つのテーブル行のコンテンツを「ストリーミング」させますか?

問題のページはhttp://zionfox.net/cards.phpです。現在の読み込み時間は約 7 ~ 10 秒かかります。コア テーブルのみを読み込み、ソースによって生成されたテーブル行を表示することで、これを短縮したいと考えています。

編集: 画像が大きいのには理由もあります。モバイル デバイスでズームインするときは、横にあるフォントと同じくらい鮮明でシャープな画像を選びます。実際のサイズの画像 (20px) で試してみましたが、ズームインするとほとんど判読できなくなりました。おそらく .png は使用するのに最適な形式ではないことに気付きましたが、使用するのは初めてfile_put_contents()で、ソース ファイルの内容が完全にはわかりません。画像の透明性を確保することもできません。

編集: 編集: ファイルのソースは次のとおりです: http://zionfox.net/cards.php.txt - コードのだらしのなさを許してください。コード。

ファイルは、 を使用して文字で区切られた配列に分割されますexplode()。これらの各配列は、 more を使用してさらに配列に分割されexplode()、この配列の各部分が処理されて、条件が一致するかどうかが確認され、値に基づいて正しい結果が返されます。そうでない場合は、外部ソースから画像を取得します。すでにイメージがあります。これはすべてechofor ループの最後で編集され、新しいテーブル行が作成され、次の行に対してプロセスが繰り返されます。


これに対する解決策である Tenhsor に感謝します。

$handle = fopen($pathToFile, "r");
if(ob_get_level() == 0) ob_start();

if($handle) {
    while(($line = fgets($handle)) !== false) {
        echo $row . "<br />";
        //The code you want to process

        ob_flush();
        flush();
    }
}
ob_end_flush();
fclose($handle);

彼らの応答に完全な解決策が見つかりました。

また、このコードだけでは問題は解決しませんでした。IIS 7.5 を実行していて、正しく動作させるためにコマンドを発行する必要がありました。コマンドは PHP のバージョンによって異なりますが、IIS で見つけることができます。cmd.exe に与えるコマンドは次のとおりです。

%windir%\system32\inetsrv\appcmd.exe set config /section:handlers "/[name='PHP53_via_FastCGI':ResponseBufferLimit:0"

PHP53_via_FastCGIPHP の名前とバージョンはどこにありますか。

4

2 に答える 2

1

ファイルの解析が簡単な場合 (つまり、複雑なロジックが含まれていない場合)、処理に 10 秒もかからないはずです。何らかの方法でコードを最適化できるかどうか、またはここに表示できるかどうかを確認してください。

コンテンツがあまり頻繁に変更されない場合、考慮できることの 1 つはキャッシングと呼ばれるものです。これは、テーブルを 1 回だけ計算し、それらの計算値を再利用してブラウザーにポストすることを意味します。

詳細については、http: //www.slideshare.net/anisniit/caching-newを参照してください。

于 2014-10-05T16:19:11.117 に答える