2011-08-04 3 views
3

別のサイトから取得したデータに基づいてGDでマップを描いたPHPファイルを作成しました。実際には、PHPの実行時にページの読み込みが非常に遅くなります。GDとパースウェブの充電時間

質問は、このPHPコードが1日1回だけ実行される方法はありますか? o自動的にWebサーバーを実行すると

+0

Windowsタスクスケジューラを使用して、phpファイルを1日1回実行することができます。 http://stackoverflow.com/questions/295386/how-to-run-a-php-file-in-a-scheduled-task –

答えて

2

マップイメージをキャッシュし、既に存在する場合はファイルからロードする必要があります。 1日に1回再生してください。この骨格コードは、その達成方法を概説しています。イメージが1日以上経過して初めてページが読み込まれると、イメージは再生成されてファイルに保存されます。

// If the file is older than 1 day, create a new one 
if (filemtime("imagecache.jpg") < time() - 86400) { 

    // Generate your new image and write it to a file 
    // Assuming $im is an image from GD 

    // UPDATE: fixed file_put_contents() because I didn't know imagejpeg() 
    // could write the file by itself. 
    imagejpeg($im, "imagecache.jpg"); 
} 
+0

私はこのソリューションが本当に好きです...スケジュール上の外部スクリプトは必要ありません。ニース! – Problematic

+0

@Problematic私はそれが実際に動作することを願っています! –

+0

私も!私が見ることができる問題は、画像が失効した後に幸運な最初のユーザーがページを叩くということです@Bcl00が話している問題、すなわちGD crunchesとしての読み込みが遅いという問題が発生します。 – Problematic

0

重い持ち上げ、結果の保存やキャッシュ(たとえば、APCまたはmemcachedを使用する、または現在使用されているイメージを上書きするなど)を行うには、1日に1回(軽いトラフィックの時間帯に)実行するcron jobを作成します。新しいもの)を作成し、その結果をユーザーに表示します。

1

これを行う方法は数多くあります。それらはすべて、gdを使って静的なグラフィックファイルを作成し、ディスクのどこかに保存するPHPスクリプトを持つことから始まります。これはあなたがユーザーに示すものです。

  1. ポイント静的ファイルへのユーザー、および定期的にcronまたは類似のものを使用してPHPを呼び出す:

    することは、あなたはそれがあなたの2つの最も簡単な選択肢があるかもしれないファイルを生成したら。

  2. ユーザーにPHPスクリプトを指示します。 PHPスクリプトでグラフィックファイルのタイムスタンプをチェックし、特定の年齢より古い場合は、それを再生成してユーザに送信します。したがって、PHPのオーバーヘッドがありますが、毎回グラフィックを生成するよりも少なくなっています。
関連する問題