開発用サーバーでデバッグの終わったプログラムを本番サーバーにデプロイしたら、Web API の呼び出しに5秒のもかかるようになった。
調べてみると本番サーバは IPv6 対応で、PDO が名前解決のために、まず IPv6 の DNS を呼び出し、見つからない場合にそこがタイムアウトしてから IPv4 の DNS を呼び出すらしいことと判明。
解決策は PDO のオプションに
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
を追加。
libcurl を使う、他の言語でも使えそう。
ちなみに探した時点では google で 'CURL_IPRESOLVE_V4' を検索しても日本語のページは見つからなかった。
2012年1月26日木曜日
2011年12月24日土曜日
2011年6月7日火曜日
PHP:define は
お仕事のソースで、暗号化と復号の関数をソースファイルの後ろの方に書き込んだ。両方で使っている定数があったので、関数の前に出して define で定義したら...、動かない。
PHP の define には以前も嵌って、そのときは解決できなかったので今度こそと詳しく調べていくと...。
関数の直前で define を定義しているのに有効にならない。なぜだぁぁぁ!!!
----
PHP ってインタープリターだから、インタープリターが define を解釈しないと有効にならないのね。C はコンパイラだから、使う関数の前で #define してあれば、ソース上のそれより後ろで有効になるけど、PHP の場合は記述してある位置に関係なく、使う前にインタープリターが解釈している必要があると。
define をソースの頭に持っていって解決。フツーに C でやっていることだが、しかし、定数定義は使うところの近くでやりたいなぁ...
PHP の define には以前も嵌って、そのときは解決できなかったので今度こそと詳しく調べていくと...。
関数の直前で define を定義しているのに有効にならない。なぜだぁぁぁ!!!
----
PHP ってインタープリターだから、インタープリターが define を解釈しないと有効にならないのね。C はコンパイラだから、使う関数の前で #define してあれば、ソース上のそれより後ろで有効になるけど、PHP の場合は記述してある位置に関係なく、使う前にインタープリターが解釈している必要があると。
define をソースの頭に持っていって解決。フツーに C でやっていることだが、しかし、定数定義は使うところの近くでやりたいなぁ...
2010年7月2日金曜日
PHP:プログラムを作ってみた
PHP のマニュアルをだいぶ読み進んだので、実際のコードを少し追ってみたくなった。
が、適当なソースが見当たらない。いきなり symfony などの大きなものに挑戦すると、挫折するのが目に見えている。
なので、ちょっとしたコードを書いてみることにした。ネタは 8queen。最初にプログラムを見たのは、確か、PC-8001 用のものを雑誌で。当時は Z80 アセンブラに書き換えて「早い早い!」と喜んでいたものだ。
が、適当なソースが見当たらない。いきなり symfony などの大きなものに挑戦すると、挫折するのが目に見えている。
なので、ちょっとしたコードを書いてみることにした。ネタは 8queen。最初にプログラムを見たのは、確か、PC-8001 用のものを雑誌で。当時は Z80 アセンブラに書き換えて「早い早い!」と喜んでいたものだ。
2010年7月1日木曜日
2010年6月30日水曜日
CentOS:PHP のバージョンアップ
CentOS 5.2 の PHP のバージョンアップの続き。
アップデート前のバージョンはこんな感じ。
アップデート前のバージョンはこんな感じ。
[root@ML115 ~]# yum list installed php*
Loading "fastestmirror" plugin
Loading "installonlyn" plugin
Installed Packages
php.x86_64 5.1.6-27.el5 installed
php-cli.x86_64 5.1.6-27.el5 installed
php-common.x86_64 5.1.6-27.el5 installed
php-ldap.x86_64 5.1.6-27.el5 installed
php-mbstring.x86_64 5.1.6-27.el5 installed
php-mcrypt.x86_64 5.1.6-15.el5.centos.1 installed
php-mysql.x86_64 5.1.6-27.el5 installed
php-pdo.x86_64 5.1.6-27.el5 installed
phpmyadmin.noarch 2.11.10-2.el5.rf installed
2010年6月29日火曜日
PHP:なかなか手ごわい
symfony の環境づくりを co-Linux から CentOS 5.2 に乗り換えたら MySQL,phpMyAdmin のインストールは拍子抜けするほどあっさり終わったが、今度は phpMyAdmin がエラーになる。「sys_get_temp_dir()なんてありもしない関数を呼んでるぞ!!」といっているのだが...。
なに、PHP 5.2.1 から実装された関数ね。現在のバージョンは 5.1.6 だからバージョンアップすれば良いだけ....。
これがうまくいかない。yom repostiory を更新しなくてはならないようなのだが、そのデータファイルがなくなっているらしい。
サーバーは redhat か。あそこは昔から古い rpm をすぐ捨ててしまうんだよなぁ...。
しょうがない。明日探そう。
なに、PHP 5.2.1 から実装された関数ね。現在のバージョンは 5.1.6 だからバージョンアップすれば良いだけ....。
これがうまくいかない。yom repostiory を更新しなくてはならないようなのだが、そのデータファイルがなくなっているらしい。
サーバーは redhat か。あそこは昔から古い rpm をすぐ捨ててしまうんだよなぁ...。
しょうがない。明日探そう。
PHP:phpMyAdmin インストール終了
ほぼこちらのページの通りに実行して、立ち上がった。ラッキー。うまくいかなかったのは、GPG キーのインポート。
メジャー OS は情報が多くて楽だ。
[root@ML115 ~]# rpm --import RPM-GPG-KEY.dag.txtと警告が出た。
警告: 排他ロックを獲得できません (/var/lib/rpm/Packages)
メジャー OS は情報が多くて楽だ。
2010年6月28日月曜日
PHP:インストール成功
PHP 環境を Linux 上に作ることにした。まずは使っていない古いサーバー上にインストールしようかと思ったのだが、室温 35℃を越える状態で、さらに室内に電気ヒーターを増やすという選択肢はありえないので、以前 Django をデプロイするときに練習に使った、メインマシン上の co-Linux を使うことにした。
午前中から初めて、途中飯を食ったり洗濯をしたりしながら、ようやくサンプルプログラムが動いた。実質4時間ぐらいかかったのではあるまいか?
最後の最後は info.php と書くべきところを info.html と書いてしまって嵌ったし...。
4ヶ月ほど前には散々いじくり回したはずなのだが、apatch どうやって動かすかすら覚えていなかった orz。
さて、一休みしてから、symphony のサンドボックスを入れよう。
午前中から初めて、途中飯を食ったり洗濯をしたりしながら、ようやくサンプルプログラムが動いた。実質4時間ぐらいかかったのではあるまいか?
最後の最後は info.php と書くべきところを info.html と書いてしまって嵌ったし...。
4ヶ月ほど前には散々いじくり回したはずなのだが、apatch どうやって動かすかすら覚えていなかった orz。
さて、一休みしてから、symphony のサンドボックスを入れよう。
2010年6月27日日曜日
PHP:official document に目を通しているが
増改築を繰り返した温泉旅館のニオイがプンプンする。完全にマスターするには「サンクコスト」が高そう。
一からプログラムを作るなら、使う機能だけを覚えていけば良いのだが、既存プログラムのメンテは大変そうだ。
一からプログラムを作るなら、使う機能だけを覚えていけば良いのだが、既存プログラムのメンテは大変そうだ。
2010年6月25日金曜日
故あって、PHP プログラマに転向
フリーでやっていこうと思ったが、なかなか厳しそうなので、転職サイトからきたメールの求人に申し込んだら内定が出た。
ということで今日から、PHP + Symfony のお勉強。
まずは PHP。
----
新しいプログラミング言語を覚えるときは、制御構文->変数の型->ライブラリ の順で行くことにしている。それぞれに特徴的なものを押さえていけば何とかなると思うのだが、PHP はどうなっているやら。
ということで今日から、PHP + Symfony のお勉強。
まずは PHP。
----
新しいプログラミング言語を覚えるときは、制御構文->変数の型->ライブラリ の順で行くことにしている。それぞれに特徴的なものを押さえていけば何とかなると思うのだが、PHP はどうなっているやら。
登録:
投稿 (Atom)