phpのプログラムから特定のウェブサーバのコンテンツを取得する場合、file_get_contents関数を重宝している。
たとえば次のように取得できる。
$html = file_get_contents( "http://www.example.xx/test1.html" );
このとき、Webサーバのログにはどのような User-Agentとして記録されているのか気になっていた。というのは、できればプログラム経由でのアクセスと見せたくないからだ。
自分の環境で試したところ、apacheログのUser-Agentに該当する部分は”-”となっていた。これをIEからアクセスしたようにするにはphp.iniの設定をいじってapacheを再起動してやればよい。
php.ini で user_agent=”Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)”としてやることにより、IEからアクセスしているように見せかけることができる。
No comments写真などの画像をアップロードするようなサイトでは、ファイルの大きさ制限等設ける必要がある。また、仮に画像ファイルでなくても、お問い合わせ画 面などユーザが入力する項目に関しては、大量のデータが挿入されて送られてくる可能性がある。そのためプログラムを記述する際にはそのあたりの考慮が必要 となってくるのだが、apacheの設定で受け取りサイズの上限を設定できることがわかった。
とhttpd.confに設定してやればよい。
これによりDoSやサーバクラッシュなどを防ぐことができる。
ブログを更新したときに通知するpingサーバを調べてみた。
登録しなくてもpingを受けてくれそうなメジャーどころのサーバリスト。
[google] http://www.google.co.jp/help/blogsearch/pinging_API.html
http://blogsearch.google.co.jp/ping/RPC2
http://blogsearch.google.co.jp/ping
[yahoo] http://help.yahoo.co.jp/help/jp/blog-search/blog-search-18.html
http://api.my.yahoo.co.jp/RPC2
http://api.my.yahoo.co.jp/rss/ping?u=RSSのアドレス
[Technorati] http://www.technorati.jp/ping
http://rpc.technorati.jp/rpc/ping
[blogstyle]http://www.blogstyle.jp/guide.html
http://blogstyle.jp/xmlrpc/?f=1
[ping.bloggers.jp] http://ping.bloggers.jp/howto.html
http://ping.bloggers.jp/rpc/
[goo] http://blog.goo.ne.jp/info/ping_info.html
http://blog.goo.ne.jp/XMLRPC
[blogoon] http://www.blogoon.net
http://ping.blogoon.net/
FreeBSDにpostgreSQLをインストールしているのだが、今までサーバ上でSQL文を実行していたためpostgreSQLのアクセスはローカルホストからしか認めていなかった。
でもwindowsから接続してメンテナンスしたくなったので、PGadmin3をインストール。
しかし、windowsからFreeBSDのpostgreSQL(5432/tcp)に接続できない。netstatで確認するとローカルホスト(127.0.0.1)からしか接続できないことになっている。 たしかpostgreSQLのアクセス制限はpg_hba.confでやっていたなあとこのファイルを修正して特定のIPアドレスからのアクセスを許可す る設定に変更。しかし再起動してもアクセスできない。しかもnetstatで確認するとまだローカルホストからしか受け付けないことになってい る…..
何がまちがってるのか調べたところ、postgresql.confの設定変更が必要だった。
listen_addresses = ‘*’
に変更して再起動したところ無事windowsから接続できた。
PgAdmin3、とても便利です。databaseの作成できるしSQL文叩けるし。
No commentsphpを最新の5.2.0にバージョンアップしたところ、mb_stringなどマルチバイト処理の関数が使えなくなった…. phpはソースから作成したのだが、configure のオプションは次にしていた。
./configure –with-pgsql –with-apxs2=/usr/local/apache/bin/apxs –enable-i18n –enable-mbregex –with-EXTENSION=zlib –with-mbstring
結局のところ、現在は –with-mbstring ではなく –enable-mbstring にしなければならなくなったようで mb系の関数が使えなかったようだ。再度作成しなおして無事マルチバイト系の処理ができるようになった。
いつから変わったんだろう….
とあるWebサービス系のプログラムで、PearのXML/Unserializer.phpを使っていたところ、大量処理できずメモリ不足のエラーでプログラムが途中で終了してしまった…
どうしようか悩んだが、php.iniのmemory_limitをデフォルトの16Mから100Mに変更して無事大量処理ができるようになった。
楽天の商品一覧から、特定のキーワードに合致する商品だけを抽出したいと思っていたのだが、そのような非公式APIを発見した。まだ使用していないがかな り便利そう。Amazon、ビッダーズなどでは公式APIがあるのだが、楽天にもあれば便利だなぁとおもっていたのでとてもうれしい。
http://d.hatena.ne.jp/p4life/20060926/1159270865
Pearの addAttachment() を利用すると比較的楽に添付ファイル付きメールをプログラムから送信できる。
例.
< ?php
require_once (”Mail.php”);
require_once (”Mail/mime.php”);
$message = “”;
$message .= “添付ファイルつきメール\n”;
$message = mb_convert_encoding($message,”ISO-2022-JP”,”EUC-JP”);
$mime = new Mail_mime(”\n”);
$mime->setTxtBody($message);
$attachment = “test1.txt”;
$mime->addAttachment($attachment);
$build_param = array(
“text_charset” => “ISO-2022-JP”,
“head_charset” => “ISO-2022-JP”
);
$body = $mime->get( $build_param );
#メール送信
$params=array(
“host”=>”localhost”,
“port”=>25,
“auth”=>FALSE);
$headers=array(
“From”=>mb_encode_mimeheader(”send_cron”,”ISO-2022-JP”).
“”,
“Subject”=>mb_encode_mimeheader(”添付ファイルテスト”,”ISO-2022-JP”),
“Content-Type”=>”text/plain; charset=ISO-2022-JP”,
“Content-Transfer-Encoding”=>”7bit”
);
$hdrs = $mime->headers($headers);
$mail = Mail::factory(’mail’);
$mail->send(”test@test.com”,$hdrs,$body);
?>
No comments