<<
2006.6
>>
[nao-pon/blog] |
||||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | ||||
4 | 5 | 6 | 8 | 9 | 10 | |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 23 | 24 | ||
25 | 26 | 28 | 29 |
とりあえず、動作させてみただけ。アウトプットのレイアウトをこれから煮詰める予定です。
結構、イケルかも。
XREA でもサーバースペースを借りています。容量は 1000M なので、まだまだ余裕だと思っていたところ、FTPでファイルを上げていたら「容量が足りません」ってメッセージ。
おかしいな?って。でも思い当たる節が・・・
サムネイルの作成で、画像サイズが大きい場合 GD で作成しようと思うと、PHPのメモリー制限に引っ掛かり PHP が落ちてしまいます。
画像をメモリー上に展開してから、縮小するので当然といえば当然です。
そこで、考えました。「Image Magick」を使おう!って。
でも、XREA は PHP が SAFE MODE で動いているので、 exec() が使えません。
そこで、また考えました。その部分を CGI動作させて実現しよう!って。
そんな、こんなで、テストしていたところ、縮小率を誤って 5000% とかしちゃって、しかも出力先が間違っていたんですね。
でその出力ファイルを SSH でシェルにログインして探してみたら・・・ありました!
/tmp ディレクトリに馬鹿でかいファイルが2個、オーナーが私のアカウントで!
早速、削除して事なきを得ましたとさ。
で、原因となった「Image Magick」を SAFE MODE でも動作させてみようという試みは、上手くいっています。
そのうち、CVSに投入します。
サーバーに imagemagick や jpegtran がインストールされている場合は、サムネイル作成のリサイズや画像回転で、それらを利用するようにしました。
多くのサーバーでは、/usr/bin ディレクトリにインストールされていると思います。その場合は何もしなくても動作するようになっています。
ただし、XREA など PHP がセーフモードで動いている場合は、image_magick.cgi に実行権限を与えてやる必要があります。
XREA の場合、パーミッション 744 でOKのようです。
これらを利用することで、PHPのメモリー制限に縛られずにおおきな画像も処理することができます。
また、jpegtran が使えれば、JPEGのロスレス回転*1が可能になります。
セーフモードに対応させるため、ちょっと工夫が必要でした。
とりあえず XREA での動作を確認していますが、どんな環境でもOKというわけにはいかないでしょう。
なにか、ありましたらコメントをお寄せください。
HypCommonFunc の Hyp_HTTP_Request クラスのHTTPクライアントで HEAD method でヘッダ情報のみ受け取ろうと思って試してみたところ、一部のサーバーにて 404 の時レスポンスがなかなか帰ってこなくて、数秒待たされる。
なぜ?
色々調べてみたけど、よく分からない。サーバーの設定によるのだろうか?仮にサーバー側の設定だとすると、こちら側ではどうしようもできない。
ファイルの存在確認を HEAD method で軽快に行おうと思ったのに、GETよりも遅いんじゃ意味がないので、しょうがなく GET method でリクエストして、ヘッダが完了した時点で接続を切るようにしてみた。
ん〜こんなんでいいのか?
誰か〜 Help me!
JavaScript を使った動的なサイトページ作成方法の中に、Ajax を利用してサーバーと通信を行い、随時ページ内容を書き換える方法がありますが、ひとつ難点があります。閲覧中のページ同じドメインのサーバーからしかデータを受け取れないということです。
そこで、別ドメインのサーバーから随時データを受け取りたい場合は、<script>タグを動的に書き換えることで、それが可能になります。
そこで、面白いことを思いつきました。
YouTube NAVI という YouTube API を利用するサイトを運営中ですが、その検索タグをリアルタイムで表示できるような仕組みを考えてみました。
1 |
|
任意のページにこのHTMLを貼り付けると、リアルタイムで検索タグが表示されます。
こんな感じです。現状は5秒ごとに内容が更新されます。
html(): no argument(s).
もちろんローカルに置いたHTMLでもOKです。
上記の HTML から呼び出される JavaScript tags.js は次のような感じです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
変数汚染をしないように、無名関数に閉じ込めてあります。
たったこれだけです。
肝心の tags.js は、PHP にて随時書き換えを行っています。
ただ、ブラウザが IE の場合は、タイムスタンプが変わってもキャッシュが有効のままで書き換わらないため、.htaccess に次のような記述をしてキャッシュコントロールを行っています。
1 2 3 4 5 |
|
思いのほか、すっきりとできちゃいました。
タグは100件保存しているので、100件表示バージョンも作ってみました。
1 |
|
html(): no argument(s).