ob_flush();
とかを使うと重い処理の進捗状況を表示することができます。
たまに使うときになるとやり方を忘れるのですが、以下のページが参考になります。
http://www.enbridge.jp/blog/2007/08/17232951.php
2014年5月27日火曜日
2013年5月21日火曜日
phpでxmlの名前空間を取得する
まず最初に名前空間とは。
太字の部分が名前空間。htmlで言うとタグの属性に似てます。
phpのsimplexml_load_file関数はとても便利で、
こんな風にするだけで簡単にxmlを解析してphpオブジェクトに変換してくれます。
ただこれだけだと名前空間部分はスルーされてしまいます。
名前空間に欲しい情報がある場合、例えばこの例では
という感じでようやく取得できます。
非常に面倒ですが、とりあえずこのやり方で取得できます。
参考ページ
http://blog.mach3.jp/2010/12/various-xml-on-php.html
<item>
<title>タイトル</title>
<link>http://www.example.com/</link>
<description>説明</description>
<pubDate>yyyy/mm/dd</pubDate>
<media:content url="http://www.example.com/path/to/jpg/hoge.jpg" type="image/jpeg" height="743" width="1024"/>
</item>
太字の部分が名前空間。htmlで言うとタグの属性に似てます。
phpのsimplexml_load_file関数はとても便利で、
$xml = "http://www.example.com/path/to/rss/hoge.rss";
$data = simplexml_load_file($xml);
こんな風にするだけで簡単にxmlを解析してphpオブジェクトに変換してくれます。
ただこれだけだと名前空間部分はスルーされてしまいます。
名前空間に欲しい情報がある場合、例えばこの例では
$data->children("media", true)->content->attributes()->url;
という感じでようやく取得できます。
非常に面倒ですが、とりあえずこのやり方で取得できます。
参考ページ
http://blog.mach3.jp/2010/12/various-xml-on-php.html
2013年5月18日土曜日
phpで送信するメールが勝手に1000バイト目あたりで改行される
ということがあって、そのせいで文字化けしたり、レイアウトが崩れたりということがありました。
調べてみたところphp側の問題ではなく、MTAで勝手に改行を入れている様子。
http://alley.way-nifty.com/han/2005/09/outlook_express_cda5.html
http://www.geek.sc/archives/743
そもそもメールというものは適宜改行を入れて書くものであって、1行に1000バイト以上書いてはいけない、という決まりになってるそうです。まだメモリが高価で容量が少なかった時の名残だそうです。
面倒ですけど1000バイトの手間で改行を入れてやるしかなさそうです。
調べてみたところphp側の問題ではなく、MTAで勝手に改行を入れている様子。
http://alley.way-nifty.com/han/2005/09/outlook_express_cda5.html
http://www.geek.sc/archives/743
そもそもメールというものは適宜改行を入れて書くものであって、1行に1000バイト以上書いてはいけない、という決まりになってるそうです。まだメモリが高価で容量が少なかった時の名残だそうです。
面倒ですけど1000バイトの手間で改行を入れてやるしかなさそうです。
2013年5月9日木曜日
phpで配列の最初と最後を取得する
$tmp_array = array('111','222','333','444','555');
$array_last = end($tmp_array);
$array_first = reset($tmp_array);
echo $array_last;
echo $array_first;
結果は以下になります。
555
111
ググると参考になるページが出てくるので詳細はそちらを参照してください。
2013年4月12日金曜日
コマンドラインでphpを実行すると文字化けする時の対処方法
ini_set("mbstring.internal_encoding", "utf8");
これで直りました。utf8のところは適宜文字コードに合わせてsjisとかにします。
Apache経由とコマンドラインでは文字コード設定が異なることがあり、それが原因でブラウザでのアクセスは問題ないのに、コマンドラインから実行すると文字化けする、ということが起こるようです。
レンタルサーバーなどによってはそういう設定になってることもあるので、cron等でコマンドラインからphpを動かす時は注意したほうが良いようです。
2013年4月6日土曜日
Google Analytics APIを使ったアクセス数ランキング
を作りました。
右サイドバーにあるアクセス数ランキングがそれです。
以下、参考にさせてもらったページです。
http://log.noiretaya.com/132
http://shared-blog.kddi-web.com/smartrelease/45
http://webimemo.com/wordpress/4402
参考というか、ほぼそのまんま使わせてもらいました。
これからAnalytics APIについて色々調べていく予定で、まずは第一歩としてアクセス数ランキングを作ってみました。
右サイドバーにあるアクセス数ランキングがそれです。
以下、参考にさせてもらったページです。
http://log.noiretaya.com/132
http://shared-blog.kddi-web.com/smartrelease/45
http://webimemo.com/wordpress/4402
参考というか、ほぼそのまんま使わせてもらいました。
これからAnalytics APIについて色々調べていく予定で、まずは第一歩としてアクセス数ランキングを作ってみました。
phpのdate関数で月日の頭にゼロを付けないで表示
ちょくちょく使うけど、いつも忘れてググるハメになるのでメモ。
2013年4月5日の場合、
結果→ 2013/04/05
結果→ 2013/4/5
2013年4月5日の場合、
date('Y/m/d');
結果→ 2013/04/05
date('Y/n/j');
結果→ 2013/4/5
2013年4月5日金曜日
.htaccessでphpのショートタグ(これ→)を使えるようにする
ショートタグはphp.iniで無効にしてるんですが、たまに必要になるときがあります。
そんな時は.htaccessに以下を書いて特定のディレクトリ下だけ有効にしてます。
以上。
そんな時は.htaccessに以下を書いて特定のディレクトリ下だけ有効にしてます。
php_flag short_open_tag on
以上。
2013年3月30日土曜日
URLに応じて条件分岐するphpサンプル(正規表現)
URL(パス)に応じて条件分岐させるコードを書いたのでサンプルとして残しておきます。
URLでの分岐はドメインとかファイル名とか色々ありますが、これはパス(ディレクトリ)で分岐させる、非常に簡単な例です。
URLでの分岐はドメインとかファイル名とか色々ありますが、これはパス(ディレクトリ)で分岐させる、非常に簡単な例です。
<?php if(preg_match("#^/blog/archive/#",$_SERVER["REQUEST_URI"])): ?>
http://example.com/blog/archive/ 以下で表示される。
<?php elseif(preg_match("#^/blog/#",$_SERVER["REQUEST_URI"])): ?>
http://example.com/blog/ 以下で表示される。
<?php elseif(preg_match("#^/company/#",$_SERVER["REQUEST_URI"])): ?>
http://example.com/company/ 以下で表示される。
<?php else: ?>
その他
<?php endif; ?>
2013年2月6日水曜日
TCPDFでPDF出力
TCPDFというのをつかってみました。
こちらなどを参考にさせてもらいました。
http://log.noiretaya.com/44
レイアウトはhtmlも使えるし、関数を使って画像を配置したり罫線を引いたりすることもできます。
htmlのサポートはかなり貧弱です。その点はmPDFのほうが優れています。
まだあまり使い込んではいませんが、ライブラリごとに特徴があるので、よく吟味して使うといいと思います。
しかしPDFの出力もなかなか大変ですね。
こちらなどを参考にさせてもらいました。
http://log.noiretaya.com/44
レイアウトはhtmlも使えるし、関数を使って画像を配置したり罫線を引いたりすることもできます。
htmlのサポートはかなり貧弱です。その点はmPDFのほうが優れています。
まだあまり使い込んではいませんが、ライブラリごとに特徴があるので、よく吟味して使うといいと思います。
しかしPDFの出力もなかなか大変ですね。
2013年1月25日金曜日
mPDFで使うフォントを変更する
mPDFで標準以外のフォントを使う方法を探したら、こちらのページがヒットしました。
http://d.hatena.ne.jp/tohokuaiki/20121113/1352810525
メイリオとArialを入れました。
それとこちらはmPDFでのcssプロパティのテスト結果。
http://www.whims-d.com/archives/181
効かないプロパティがけっこうあるので注意が必要です。
http://d.hatena.ne.jp/tohokuaiki/20121113/1352810525
メイリオとArialを入れました。
それとこちらはmPDFでのcssプロパティのテスト結果。
http://www.whims-d.com/archives/181
効かないプロパティがけっこうあるので注意が必要です。
2013年1月9日水曜日
phpでhtmlをpdfに変換できるライブラリ「mPDF」
mPDFというライブラリがあることを知り、さっそく試してみました。
こちらのページを参考にしました。
http://blog.syuhari.jp/archives/1992
簡単です。
htmlがpdfになります。
でも日本語が文字化けしてしまいます。
ググってみたら、バージョン5.1以降ではライブラリ本体のソースをいじらないと日本語対応できないとのこと。
http://d.hatena.ne.jp/susan-style/20120321/1332308489
こちらのページの通りに修正したら、無事日本語表示できました。
こちらのページを参考にしました。
http://blog.syuhari.jp/archives/1992
簡単です。
htmlがpdfになります。
でも日本語が文字化けしてしまいます。
ググってみたら、バージョン5.1以降ではライブラリ本体のソースをいじらないと日本語対応できないとのこと。
http://d.hatena.ne.jp/susan-style/20120321/1332308489
こちらのページの通りに修正したら、無事日本語表示できました。
2012年5月30日水曜日
phpの「Notice: Undefined index」を非表示にする
古いphpアプリの環境を移したとたん、「Notice: Undefined index」というNoticeメッセージが出るようになりました。
「error_reporting(E_ERROR)」とかにすれば非表示にできるのですが、全スクリプトにこの記述が必要になります。かなりめんどくさいです。
というわけでphp.iniのほうに「error_reporting = E_ERROR」を書いてhttpdをrestart。
これで解決しました。
「error_reporting(E_ERROR)」とかにすれば非表示にできるのですが、全スクリプトにこの記述が必要になります。かなりめんどくさいです。
というわけでphp.iniのほうに「error_reporting = E_ERROR」を書いてhttpdをrestart。
これで解決しました。
2012年4月19日木曜日
phpのstrtotime関数を使って文字列を日付型に整形する
よく忘れるのでメモ。
こんなのもいけちゃいます。
echo date("Y/m/d",strtotime("20120418"));
こんなのもいけちゃいます。
echo date("Y-m-d",strtotime("Sat, 14 Apr 2012 13:17:36 +0000"));
2012年4月15日日曜日
php.iniのmax_input_varsというパラメータ
php5.3以降で、新たにmax_input_varsというパラメータが追加されていました。
これはgetやpostで受け付けるパラメータ数の上限をあらかじめphp.iniの設定で決めておくというもので、DOS攻撃の対策として追加されたようです。
デフォルト値は1000。
普通1000件ものパラメータを受けるようなWebアプリはないと思います。また今はAjax全盛時代なので、一回のリクエストのパラメータは少なくなってきていると思います。
なんですが、たとえば古いWebアプリとか、条件が重なったりするとこの制限にひっかかることがあると思います。というか自分がひっかかりました。
そういう場合はアプリ側を作りなおすのが最善だと思いますが、一時しのぎとしてこのmax_input_varsの数字を増やしておけば対処できます。
参考
http://d.hatena.ne.jp/gallu/20120111/p1
これはgetやpostで受け付けるパラメータ数の上限をあらかじめphp.iniの設定で決めておくというもので、DOS攻撃の対策として追加されたようです。
デフォルト値は1000。
普通1000件ものパラメータを受けるようなWebアプリはないと思います。また今はAjax全盛時代なので、一回のリクエストのパラメータは少なくなってきていると思います。
なんですが、たとえば古いWebアプリとか、条件が重なったりするとこの制限にひっかかることがあると思います。というか自分がひっかかりました。
そういう場合はアプリ側を作りなおすのが最善だと思いますが、一時しのぎとしてこのmax_input_varsの数字を増やしておけば対処できます。
参考
http://d.hatena.ne.jp/gallu/20120111/p1
2011年12月24日土曜日
自宅サーバー再構築メモ
自宅サーバーを新しく構築しなおしました。
これまでCentOS4+ThinkPad R50eで運用してましたが、少し前に不穏なディスクエラーが出てたこともあったので、CentOS5+let's note CF-Y4に変えました。
ThinkPad R50eはCDROMドライブなのでCDを3枚くらい焼いた記憶がありますが、CF-Y4はDVD読めるのでディスク1枚で済みました。
以下はOSインストール後のサーバー構築手順メモ。
備忘録として残しておきます。
# vi /etc/sysconfig/selinux
再起動
# yum list installed
インストールされているパッケージを調べる
# vi /etc/ssh/sshd_config
(sshd_configじゃなくてssh_configを編集するミスをした。。)
/etc/sysconfig/iptablesを旧サーバーからまるごとコピペ
この辺を参考に。
http://pro-grammer.info/archives/902
この辺を参考に。
http://iwbc.info/archives/877
# yum install php
# yum install php-pear
# yum install php-devel
# yum install php-gd
# yum install php-mysql
# yum install php-mbstring
# yum install php-xml
# yum install mysql
# yum install mysql-server
そしてもう一度upgradeして最新版に。
で、あとは必要なパッケージを入れていく。
http://kawama.jp/archives/2006/06/pear.html
# vi /etc/php.ini
http://kawama.jp/archives/2011/02/mysql5-5_character-set-server.html
データはdumpで移行する
/etc/httpd/conf.d/vhost.confをコピペして移行
こちらを参照
http://kawama.jp/archives/2011/07/07/centos5_mod_ssl.html
コピペで移行
バックアップスクリプトやcronなど各種設定を移行。
この辺参考。
http://kawama.jp/archives/2005/12/linuxusb.html
http://kawama.jp/archives/2008/03/usb.html
http://kawama.jp/archives/2009/10/linuxusb_1.html
http://kawama.jp/archives/2010/07/linux%E3%81%A7%E3%83%A2%E3%83%8B%E3%82%BF%E3%81%AE%E9%9B%BB%E6%BA%90%E3%82%92%E7%AE%A1%E7%90%86.html
Postfixを入れ、mtaを変更
http://kawama.jp/archives/2007/10/mtasendmailpost.html
sendmail削除しておく
OP25対応
http://kawama.jp/archives/2007/03/postfixop25b.html
送信テスト
http://kawama.jp/archives/2011/05/linux_mail_oneliner.html
main.cfの編集
# vi /etc/postfix/main.cf
# vi /etc/aliases
rootとかをgmail宛に転送
# newaliases
http://www.hi-ho.ne.jp/yoshihiro_e/dice/linux.html
とりあえず以上。
移行漏れがあれば随時対応していきます。
これまでCentOS4+ThinkPad R50eで運用してましたが、少し前に不穏なディスクエラーが出てたこともあったので、CentOS5+let's note CF-Y4に変えました。
ThinkPad R50eはCDROMドライブなのでCDを3枚くらい焼いた記憶がありますが、CF-Y4はDVD読めるのでディスク1枚で済みました。
以下はOSインストール後のサーバー構築手順メモ。
備忘録として残しておきます。
■selinuxを無効化
# vi /etc/sysconfig/selinux
SELINUX=disabled
再起動
■yum
# yum list installed
インストールされているパッケージを調べる
■SSH
# vi /etc/ssh/sshd_config
Port 10022
PermitRootLogin no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
(sshd_configじゃなくてssh_configを編集するミスをした。。)
■iptables
/etc/sysconfig/iptablesを旧サーバーからまるごとコピペ
■vsftpd
この辺を参考に。
http://pro-grammer.info/archives/902
■yumでphpとMySQLのインストール
この辺を参考に。
http://iwbc.info/archives/877
# yum install php
# yum install php-pear
# yum install php-devel
# yum install php-gd
# yum install php-mysql
# yum install php-mbstring
# yum install php-xml
# yum install mysql
# yum install mysql-server
■pear
# pear upgrade --force PEAR-1.5.4
# pear upgrade PEAR
# pear update-channels
pearが古い場合、最初に強制的に1.5.4にアップグレードする必要がある。そしてもう一度upgradeして最新版に。
# pear upgrade PEAR
で、あとは必要なパッケージを入れていく。
http://kawama.jp/archives/2006/06/pear.html
■php
# vi /etc/php.ini
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
date.timezone =Asia/Tokyo
■mysql
http://kawama.jp/archives/2011/02/mysql5-5_character-set-server.html
データはdumpで移行する
■http
/etc/httpd/conf.d/vhost.confをコピペして移行
■https
こちらを参照
http://kawama.jp/archives/2011/07/07/centos5_mod_ssl.html
■cron
コピペで移行
■バックアップ
バックアップスクリプトやcronなど各種設定を移行。
■USBメモリの設定
この辺参考。
http://kawama.jp/archives/2005/12/linuxusb.html
http://kawama.jp/archives/2008/03/usb.html
http://kawama.jp/archives/2009/10/linuxusb_1.html
■モニタの電源消灯
http://kawama.jp/archives/2010/07/linux%E3%81%A7%E3%83%A2%E3%83%8B%E3%82%BF%E3%81%AE%E9%9B%BB%E6%BA%90%E3%82%92%E7%AE%A1%E7%90%86.html
■postfix
Postfixを入れ、mtaを変更
http://kawama.jp/archives/2007/10/mtasendmailpost.html
sendmail削除しておく
# yum remove sendmail
OP25対応
http://kawama.jp/archives/2007/03/postfixop25b.html
送信テスト
http://kawama.jp/archives/2011/05/linux_mail_oneliner.html
main.cfの編集
# vi /etc/postfix/main.cf
inet_interfaces = all
myhostname = home.nainai16.com
mynetworks = 192.168.1.0/24
mydestination = $myhostname
■メール転送
# vi /etc/aliases
rootとかをgmail宛に転送
# newaliases
DiCEの設定
http://www.hi-ho.ne.jp/yoshihiro_e/dice/linux.html
とりあえず以上。
移行漏れがあれば随時対応していきます。
2011年9月25日日曜日
Amazon PAAPIの仕様変更に対応(2011-08-01バージョン)
2011-08-01バージョンのAmazon PAAPI対応作業を完了しました。
https://affiliate.amazon.co.jp/gp/advertising/api/detail/api-changes.html
旧バージョンの終了は2011年10月26日なのでまだだいぶ余裕がありますが、早めに対応しておきました。
個人的に今回の仕様変更で一番影響が大きかったのは「ItemSearch オペレーションにおいて、ItemPage パラメータの最大値は従来の400から10に変更となります。」のところでしょうか。
とは言っても修正箇所はほとんどなく、Pear::Pagerに
って処理を入れるだけで済みました。
まああまりページ数が多くてもボットの巡回でサーバー負荷が高まるし、PAAPIの利用制限にも引っかかってしまうので、この仕様変更はAmazon・利用者双方にとって妥当なところだと思います。
しかしPAAPIは年々縮小していく傾向ですね。
今後もさらに縮小していくことが考えられるので、PAAPIを活用したサービスを作るのは少し躊躇してしまいますね。
https://affiliate.amazon.co.jp/gp/advertising/api/detail/api-changes.html
旧バージョンの終了は2011年10月26日なのでまだだいぶ余裕がありますが、早めに対応しておきました。
個人的に今回の仕様変更で一番影響が大きかったのは「ItemSearch オペレーションにおいて、ItemPage パラメータの最大値は従来の400から10に変更となります。」のところでしょうか。
とは言っても修正箇所はほとんどなく、Pear::Pagerに
if($itemcount>100){ $itemcount = 100; }
って処理を入れるだけで済みました。
まああまりページ数が多くてもボットの巡回でサーバー負荷が高まるし、PAAPIの利用制限にも引っかかってしまうので、この仕様変更はAmazon・利用者双方にとって妥当なところだと思います。
しかしPAAPIは年々縮小していく傾向ですね。
今後もさらに縮小していくことが考えられるので、PAAPIを活用したサービスを作るのは少し躊躇してしまいますね。
2011年7月18日月曜日
Pear::DBからMDB2への移行で修正した箇所
Pear::DBからMDB2への移行をしたのですが、けっこう面倒でした。
覚えている範囲でメモしておきます。
■DBへの接続
変更前
変更後
■FETCHMODE定数の変更
変更前
変更後
■limit句
変更前
変更後
■quote関数
変更前
変更後
■その他
※MDB2ではexecuteMultipleで連想配列が使えないので注意。DBから値を取得して使う場合などは、MDB2_FETCHMODE_ASSOCじゃなくMDB2_FETCHMODE_ORDEREDを使うと良い。
※quoteSmartではnullを自動的に空白文字列化してくれていたが、quoteではその機能がないので、nullが入る可能性のあるカラムは予めnull化にしておく。
※上記修正の該当箇所はこんなふうにfindで調べました。
覚えている範囲でメモしておきます。
■DBへの接続
変更前
$db = DB::connect(DSN);
変更後
$db = MDB2::connect(DSN);
$db->loadModule('Extended');
■FETCHMODE定数の変更
変更前
$rs->fetchRow(DB_FETCHMODE_ASSOC)
変更後
$rs->fetchRow(MDB2_FETCHMODE_ASSOC)
■limit句
変更前
$db->limitQuery($sql, 0, 10);
変更後
$db->setLimit(10, 0);
$db->query($sql);
■quote関数
変更前
$db->quoteSmart($v["value"])
変更後
$db->quote($v["value"])
■その他
※MDB2ではexecuteMultipleで連想配列が使えないので注意。DBから値を取得して使う場合などは、MDB2_FETCHMODE_ASSOCじゃなくMDB2_FETCHMODE_ORDEREDを使うと良い。
※quoteSmartではnullを自動的に空白文字列化してくれていたが、quoteではその機能がないので、nullが入る可能性のあるカラムは予めnull化にしておく。
※上記修正の該当箇所はこんなふうにfindで調べました。
find . -name \*.php -print xargs grep limitQuery
2011年7月15日金曜日
OpenPNEを2.14から3.3にアップグレード
OpenPNE2.14を使ってたんですが、既に主流は3系になっており、また2系はphp5.2以上では動作が保証されないということなので、面倒ですが3系にアップグレードすることにしました。
アップグレード手順はこちらを参考にしました。
http://www.openpne.jp/doc-upgrade-from-2x/
とりあえず深く考えず、手順通りにアップグレードを実施します。
が、案の定エラーがたくさん出てうまくいきませんでした。
ある程度時間がかかりそうな雰囲気だったので、腹をくくってアップグレードに取り組んでいきます。
・phpモジュールを入れる
そもそも動作環境が用意できてませんでした。yumでパッケージ入れます。
などを実行し、
で指定のモジュールが入ってることを確認します。
・InnoDB化
を実行すると、SQLでエラーが出まくってました。
詳細は割愛しますが、テーブルが作れないとか、インデックスがどうのこうのとか言われました。
phpMyAdminでテーブルを見ると、もとからある2.14のテーブルはMyIsamで、新しく作られた3.3系のテーブルはInnoDBになってました。
ということは、InnoDBじゃないといけないのかな?と思ってググってみたらそのとおりでした。
http://d.hatena.ne.jp/shiku_otomiya/20110530/p1
というわけで、ALTER TABLEで2.14系のテーブルをInnoDBにします。
これでエラーが出なくなりました。
・php.iniの設定
アップグレード処理でメモリを使うみたいなので、一時的にmemory_limit=-1にしました。
・日記コメントの添付画像
アップグレード完了後、ログインして巡回してみたところ、日記コメントの添付画像が消えてるのに気付きました。
DBを見てみたところ、diary_comment.has_imagesのデータが移行できていなかったようなので、以下のように画像があるコメント調べてupdateしました。
以上でアップグレード完了です。
多少手間取りましたが、勘と経験で乗り切ることができました。
アップグレード手順はこちらを参考にしました。
http://www.openpne.jp/doc-upgrade-from-2x/
とりあえず深く考えず、手順通りにアップグレードを実施します。
が、案の定エラーがたくさん出てうまくいきませんでした。
ある程度時間がかかりそうな雰囲気だったので、腹をくくってアップグレードに取り組んでいきます。
・phpモジュールを入れる
そもそも動作環境が用意できてませんでした。yumでパッケージ入れます。
# yum install php53-xml
# yum install php53-gd
などを実行し、
# php -m
で指定のモジュールが入ってることを確認します。
・InnoDB化
$ ./symfony openpne:upgrade-from-2 --origin=2.14
を実行すると、SQLでエラーが出まくってました。
詳細は割愛しますが、テーブルが作れないとか、インデックスがどうのこうのとか言われました。
phpMyAdminでテーブルを見ると、もとからある2.14のテーブルはMyIsamで、新しく作られた3.3系のテーブルはInnoDBになってました。
ということは、InnoDBじゃないといけないのかな?と思ってググってみたらそのとおりでした。
http://d.hatena.ne.jp/shiku_otomiya/20110530/p1
というわけで、ALTER TABLEで2.14系のテーブルをInnoDBにします。
ALTER TABLE table_name ENGINE = InnoDB;
これでエラーが出なくなりました。
・php.iniの設定
アップグレード処理でメモリを使うみたいなので、一時的にmemory_limit=-1にしました。
・日記コメントの添付画像
アップグレード完了後、ログインして巡回してみたところ、日記コメントの添付画像が消えてるのに気付きました。
DBを見てみたところ、diary_comment.has_imagesのデータが移行できていなかったようなので、以下のように画像があるコメント調べてupdateしました。
select distinct diary_comment_id from diary_comment_image;
update diary_comment set has_images = 1 where id in (↑で抽出したid);
以上でアップグレード完了です。
多少手間取りましたが、勘と経験で乗り切ることができました。
2011年5月2日月曜日
Yahoo!検索WebAPIも利用制限が始まっていた
昔作って放置していたサイトを久しぶりに見たら、Yahoo!の検索APIを使ってる部分が表示されていないことに気が付きました。
で、Yahoo!デベロッパーネットワークに行ってみたら、案の定、利用制限についてのアナウンスが出てました。
http://developer.yahoo.co.jp/webapi/search/premium.html
だそうです。うーん、少ない。。。Googlebotが来たら1~2時間程度で消化してしまうレベルです。
少し前にAmazon PAAPIでもアクセス数制限が導入されましたが、ポータルが提供するAPIは、膨大な負荷になってしまうんでしょう。
「1日1000件では少ない!」という人のために、アップグレード版というのが新しく作られています。
条件は以下。
自分の場合、Yahoo!ウォレットに登録済みだったので(1)は既にクリアしてました。
(3)は、APIのURLを変更しろ、ということなので、ソースを修正。
そして(2)がちょっと分かりにくかったです。少し迷ってしまいましたが、「アップグレード版検索APIを使う用に、新しくデベロッパーネットワークを登録しなおせ」ということをようやく理解し、新たにIDを発行し、APIキーを差し替えました。

すべて完了すると、無事アップグレード版検索APIを使うことができるようになりました。
とりあえずの対応はしましたが、根本的な対策として無駄なアクセスを極力少なくする努力は継続しないといけないですね。
節電にもなりますし。
で、Yahoo!デベロッパーネットワークに行ってみたら、案の定、利用制限についてのアナウンスが出てました。
http://developer.yahoo.co.jp/webapi/search/premium.html
24時間中、1つのアプリケーションIDにつき1,000件
だそうです。うーん、少ない。。。Googlebotが来たら1~2時間程度で消化してしまうレベルです。
少し前にAmazon PAAPIでもアクセス数制限が導入されましたが、ポータルが提供するAPIは、膨大な負荷になってしまうんでしょう。
「1日1000件では少ない!」という人のために、アップグレード版というのが新しく作られています。
条件は以下。
(1)Yahoo!プレミアム会員、Yahoo! BB会員、Yahoo!ウォレットのいずれかに登録する
(2)アプリケーションIDの登録画面にてアップグレード版検索API専用アプリケーションIDを取得する
(3)アップグレード版検索APIを利用する
自分の場合、Yahoo!ウォレットに登録済みだったので(1)は既にクリアしてました。
(3)は、APIのURLを変更しろ、ということなので、ソースを修正。
そして(2)がちょっと分かりにくかったです。少し迷ってしまいましたが、「アップグレード版検索APIを使う用に、新しくデベロッパーネットワークを登録しなおせ」ということをようやく理解し、新たにIDを発行し、APIキーを差し替えました。

すべて完了すると、無事アップグレード版検索APIを使うことができるようになりました。
とりあえずの対応はしましたが、根本的な対策として無駄なアクセスを極力少なくする努力は継続しないといけないですね。
節電にもなりますし。
登録:
投稿 (Atom)