なんといってもAPIです。
他サイトにリクエストを投げるわけですからどうしても時間がかかってしまいます。
またリクエスト回数が増えると負荷もかかるので、多くのサイトでは上限回数が指定されているはずです。
そんなときこそAPCです。やってみましょう。
題材は適当にググって引っかかったサムネイル画像作成API
http://img.simpleapi.net/
まずは普通に実行
thumbnail.php
1
2
3
4
5
6
7
8
9
10
|
//画像を拾ってくる
$url='http://img.simpleapi.net/small/http://www.google.co.jp/';
$ret=file_get_contents($url);
//画像表示
header('Content-Length: '.strlen($ret));
header('Content-Type: image/jpeg');
print($ret);
|
リクエストがあると毎回img.simpleapi.netまで画像を取りに行きます。
次にAPCを使ってみます。
thumbnail_apc.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
//APCからキャッシュロード
$api_cache=apc_fetch('thumbnail_cache');
//キャッシュロードに失敗したら
if($api_cache===false){
//画像を拾ってくる
$url='http://img.simpleapi.net/small/http://www.google.co.jp/';
$api_cache=file_get_contents($url);
//APCにキャッシュを保存
apc_store('thumbnail_cache',$api_cache,3600);
}
//画像表示
header('Content-Length: '.strlen($api_cache));
header('Content-Type: image/gif');
print($api_cache);
|
APCにデータが無ければ拾ってきてそれを突っ込みますが、あればAPIにアクセスすること無しにキャッシュから画像を表示します。
というわけであっさり成功。
さて、ここらへん見てみるとどうもAPCにはさらに別の使い方があるようで、というかこっちが主題でapc_fetch()とかがおまけっぽくない?
http://neta.ywcafe.net/000952.html
http://www.maido3.com/server/option/php.html
ちなみにapc_fetchに第二引数を渡したらエラーになりました。
mixed apc_fetch ( string $key [, bool &$success ] )
Warning: apc_fetch() expects exactly 1 parameter, 2 given
はて??
PR
トラックバック
トラックバックURL: