2009年05月05日

Allowed memory エラー from Request.php

自分が管理しているサイトで、ある日突然、

『Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 140726272 bytes) in /usr/local/php/5.2.8/lib/php/HTTP/Request.php on line 1507』

というエラーが表示されるようになりました。

このサイト、ここ数カ月ソースをいじっていないですし、つい最近エラーが出るようになったようです。

HTTP_RequestクラスのsendRequest()関数呼び出し時にメモリ確保がらみで失敗しているのかなと思いソースコードを見てみると、1507行目は gzinflate()関数を呼び出しているところでした。

メモリがらみで少し検索して調べると、php.iniのmemory_limitを'-1'に設定するとよいらしい(-1は使用可能メモリに制限をしない設定)とのことで、さっそく設定してみました。

すると。。。

『Warning: gzinflate() [function.gzinflate]: buffer error in /usr/local/php/5.2.8/lib/php/HTTP/Request.php on line 1507』

エラーが警告になっただけで、全く改善されず(>_<;;

結局、原因は分からないので、gzinflateを呼び出されないように、HTTP 1.0でアクセスするように、修正しました。修正は以下の通り。

$client = new Http_Request($uri);
$client->setMethod(HTTP_REQUEST_METHOD_GET);
$client->setHttpVer(HTTP_REQUEST_HTTP_VER_1_0);
$client->removeHeader('Accept-Encoding');
$client->sendRequest();


removeHeader()をしているのは、newした時に、自動的に'Accept-Encoding: gzip'を設定してしまうため。

以上で、無事対処できました。
でも、真の原因がつかめていないので、このままで大丈夫か心配です。
posted by しおしおプログラマ〜 at 23:42 | Comment(3) | TrackBack(0) | php

2008年03月25日

CakePHP チュートリアル

CakePHPのチュートリアル(サンプル)を探しています。

部分的なサンプルは多数あるのですが、1から教えてくれるチュートリアルは少ないですね。

見つけたサイトは以下の2つ
付録 A. Cake ブログチュートリアル
CakePHP私見チュートリアル

上のサイトは、CakePHPフォーラムにあるチュートリアルですね。
下のサイトは、最近更新が止まっているようですが、数少ないチュートリアル的にCakePHPを解説してくれているサイトです。しかも、シンプルなチュートリアルになっているので、自分のような初心者にはぴったりのようです。

というわけで、下のチュートリアルを試してある程度理解してから、上のチュートリアルを試したいと思います。その後、実際のサイトを作成する予定。

今回CakePHPを調べていて気づいたのですが、mod_rewriteを使用しているのでApache前提なんですね。IISをよく使う自分にとっては、ちょっぴり残念です。

posted by しおしおプログラマ〜 at 11:04 | Comment(0) | TrackBack(0) | php

2008年03月16日

PHPフレームワークについて

PHPフレームワークって調べるとたくさんあってビックリ。

koyhogeさんが、一覧を作成されているようです。
PHPフレームワーク一覧:http://d.hatena.ne.jp/koyhoge/20060327/1143444511

この中でも、自分がよいなと思ったのが、
・symfony
・CakePHP
です。

『symfony』は、中大規模向け、さくらインターネットで使うのが大変そう、中上級者向け、というのがあり、今回はお手軽さを重視して、『CakePHP』にしたいと思います。

フレームワークについての理解が深まれば、次は『symfony』を利用したいと思います。

しかし、RubyのRailsのように、標準が1つなら良かったのにね〜。
posted by しおしおプログラマ〜 at 16:30 | Comment(0) | TrackBack(0) | php

2008年02月02日

PHP4→PHP5への移行結果

とくに問題なく動いちゃいましたヽ(´▽`)ノ

修正箇所はPHP.iniのみで、

extension_dir = "/usr/local/lib/php/20020429/"
extension = "sqlite.so"

とSQLiteの機能を追加していたところを削除しただけ。

これでSQLite(Version)についてもバッチリ動きました。
phpinfoでみても、

PECL Module version:2.0-dev $Id: sqlite.c,v 1.166.2.13.2.9 2007/05/19 17:58:22 iliaa Exp $
SQLite Library:2.8.17
SQLite Encoding:iso8859

となっており、なにもせずとも対応済みなことが確認できます。

また、PEAR::DBについてもインストール済みで、問題なくインクルードできました。

ありがとう、さくらインターネット(´∀`)b

まあ、自分は複雑なことをほとんどしていないので、スムーズに移行できたのかも。。。

ちなみにPHP4→PHP5への移行についてマニュアルがあります。
注意する点は、この中のさらに『PHP: 下位互換性のない変更点 - Manual』でしょうか?
正直よく分かりません( ´Д⊂ヽ
とりあえず、この辺にでてくる関数を使用しているかチェックすればOKなのかな?
posted by しおしおプログラマ〜 at 08:12 | Comment(0) | TrackBack(0) | php

2008年01月30日

「さくらのレンタルサーバ」スタンダード・プレミアム PHP5 の提供

なにを開発しようか考えているときに、このニュース。

「さくらのレンタルサーバ」スタンダード・プレミアム PHP5 の提供

前から知ってはいましたが、昨日より提供開始。
自分のコントロールパネルにも、しっかり『PHPのバージョン選択』メニューが追加されていました。

つーわけで、PHP5に移行せざるをえまい。
しおしおプログラマ〜の日常については、問題ないと思いますが、もう一つクローズドで運営しているページはSQLiteをPEAR::DBから使用しているので、大丈夫か心配。。。
#SQLiteもVersion 2だし

移行についての結果も、この場で報告したいと思います。
posted by しおしおプログラマ〜 at 23:29 | Comment(0) | TrackBack(0) | php