Neo Inspiration

  • Search

    • About Me

      • inspi 改め
        jakk@webアーキテクト(自称)
        php,javascript,seoなど
        得意技は extract();

  • Categories

  • Ranking

  • Comments

  • Others


  • Archive for 5 月, 2008

    js を使わずに PHPだけで、loading メッセージを出して終わったら消す

    金曜日, 5 月 30th, 2008

    どうでもいい php tips

    こんなことがあるので

    管理画面を作っていて
    長い処理とかでブラウザのタイムアウトとかを防ぐ為に
    php だと

    echo “Now Loading…”;

    処理やってる間1ループごとに
    echo “.”;

    処理が終わってから
    echo “End.”;

    とか echo したりすると思うんですが、
    それがお客にも見せるようなものだったりする特殊な場合
    (ユーザがタイムアウトしそうな処理全部かもしれないけど)

    echo した Now Loading… が画面にずっと残っちゃってうざいね

    ってことで、 それを js を使わずに消してしまおうと。

    魔法を使って解決します

    魔法でも なんでもないんだけどw

    こうする。

    echo “<div id=’loading’>Now Loading…”;

    処理やってる間1ループごとに
    echo “.”;

    処理が終わってから
    echo “End.</div>”;

    とPHPで書いておいて
    CSS で

    #loading {
    display:none;
    }

    こう書けばOK。

    これで、処理中は …. がどんどん増えていって
    End が表示されて、
    その後PHPの残りのプログラムが処理されて、
    最後に html を生成して、display:none が当たって見えなくなるわけです。

    HTMLの読み込み時間差を利用するかんじ。

    応用するとこんなことが

    PHPとCSSだけで可能です。

    こんなこともできます。

    ちなみにこれのソースはこんなかんじ。

    <?php
    echo “<div id=’loading’ style=’width:100%;margin:0;padding:0;height:100%;text-align:center;’>\n<div style=’position:absolute;top:50%;left:50%;margin-left:-7.5em;margin-top:-1em;’>\n<div style=’width:500px;’>\n<ul id=’loading’ style=’list-style-type: none;’>\n”;

    for ($i=0;$i<10;$i++) {
    echo “<li style=’float:left;margin:0px;border:1px solid silver;background-color:cyan;color:cyan;’>|</li>\n”;
    ob_flush;
    flush;
    sleep(1);
    }

    echo “</ul>\n</div>\n</div>\n</div>”;

    ?>

    html>
    <head>
    <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
    <title>ローディングテスト</title>

    <style>
    #loading {
    display:none;
    }
    </style>
    </head>

    <body>
    全部完了したらこれだけが表示されます。
    </body>
    </html>

    一度PCサイトと認識されたドメインはモバイルサイトになれない?

    水曜日, 5 月 28th, 2008

    モバイルサイトの実験をしてる過程でこんな状況になったのでメモ。

    仕込み

    携帯用CMSフレームワークを作ったので、
    それを

    ・テストサイト1:既存にあるドメイン(被リンク自前サイト100本くらい&PCのGoogleでキャッシュされてる)
    ・テストサイト2:新規取得ドメイン(被リンク0)

    にのせて、コンテンツボリュームもほぼ同じに調整した状態で、
    Google Web Masters Tool に ケータイ/cHTMLで登録。

    2週間での経過

    テストサイト1のクロール状況
    ⇒モバイルクロールすらされず。
     もちろんキャッシュもされず。

    ものの見事に初日にきた通常BOTしかきていなくて、
    かつクロールしていったのにPC版Googleでみてもキャッシュが変更されていない
    (これはモバイルコンテンツだからコンテンツボリュームが少ないから?)

    で以下履歴

    Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html),66.249.70.214,crawl-66-249-70-214.googlebot.com
    Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html),66.249.70.214,crawl-66-249-70-214.googlebot.com
    Google-Sitemaps/1.0,66.249.85.88,ff-in-f88.google.com
    Google-Sitemaps/1.0,66.249.85.88,ff-in-f88.google.com
    Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html),66.249.70.214,crawl-66-249-70-214.googlebot.com
    Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html),66.249.67.236,crawl-66-249-67-236.googlebot.com



    以下ずっとこれ。

    テストサイト2のクロール状況
    ⇒モバイルクロールされた。それもすぐに。
     キャッシュは1ページだけだけどこれはコンテンツボリュームの問題かな。

    サイトマップ突っ込んで2日でにいきなりモバイルクロール開始。
    初日は通常のクローラ、3日後にモバイルクローラがきてページをガンガンクロールしていく。
    (ちなみにGoogleのサイトマップ しか ないのになぜかこんなとこからもアクセスがくるという219.118.188.122)

    Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html),66.249.73.20,crawl-66-249-73-20.googlebot.com
    Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html),66.249.70.214,crawl-66-249-70-214.googlebot.com
    Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html),66.249.67.236,crawl-66-249-67-236.googlebot.com
    Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html),66.249.67.236,crawl-66-249-67-236.googlebot.com
    Nokia6820/2.0 (4.83) Profile/MIDP-1.0 Configuration/CLDC-1.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html),66.249.67.236,crawl-66-249-67-236.googlebot.com
    Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html),66.249.67.236,crawl-66-249-67-236.googlebot.com
    Nokia6820/2.0 (4.83) Profile/MIDP-1.0 Configuration/CLDC-1.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html),66.249.67.236,crawl-66-249-67-236.googlebot.com

    こっから携帯BOTで全クロール


    Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html),66.249.67.236,crawl-66-249-67-236.googlebot.com
    Google-Sitemaps/1.0,66.249.85.88,ff-in-f88.google.com
    Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html),66.249.67.236,crawl-66-249-67-236.googlebot.com

    結論

    ってことで2週間たっても音沙汰ないあたり、
    一度PCサイトと認識されたドメインはモバイルサイトとして
    認識されるのにすごい時間がかかるってことですかね。

    つかまだ認識すらされてないので、
    どのくらいで認識されるのかもおいおい検証ってとこですね。

    MySQL server has gone awayで吹いた

    火曜日, 5 月 27th, 2008

    出社してサイトチェックしようとしたら繋がらない。

    ちょうどタイミングよくメールでDBのパス(同じサーバの別DB)
    を変更したとか言うアナウンスがきたので
    それ関係するのかなと調査開始。

    原因がまずわからん

    パスはどうも大丈夫なよう(当たり前だけど)

    で 繋がらないのはなぜか。。DNS?
    いやでもDB接続しないただのテキストファイルとか開けるし。。
    と 30分くらいうだうだ悩みつつF5押しまくってたら
    突然繋がった。

    が。。

    真っ白。

    管理画面にアクセスしてみると
    「MySQL server has gone away」
    の文字が。

    どっかいったってどういうことだwwwwwwwww

    DBを直すか。。

    とりあえずgoogle先生に聞こうってことで
    聞いてみると どうやらDBがぶっ壊れてるかアクセス過多か
    クエリーがでかすぎだと出るらしい。

    ・アクセス過多はない(ローンチして1週間くらいのサイトだし)
    ・クエリーも最適化はある程度してある(と信じたい)
    ・まさかぶっ壊れた??

    ってことで直でDBにつないで SELECTしてみる。
    ⇒普通にOK

    CHECK TABLE ぽぃ。
    ⇒「Table is already up to date」しかでない。
    #「Table is Table is marked as crashed」って出れば話ははやかったのに。
    #SELECTもUPDATEもできるのに Table is marked as crashed なんてでないか。。

    だがサイトにアクセスしてみるとやっぱDbに繋がらない。

    ええいめんどくせー ってことで repair table 発動。



    直った。

    結局

    「Table is marked as crashed」
    以外でもぶっ壊れてるってことがあるんですね。

    2008/10/13 05:50:48