[PHP-users 4730] Re: PHP Fatal error

PHP-ML User APTECH php-users@php.gr.jp
Tue, 15 Jan 2002 21:25:34 +0900


野中さま

お返事が遅くなってしまいました。
色々確認作業を行っておりました。
結局、結論が出ずに現在にいたっております。

現在の状況は
phpのmakeオプションで、memory-limitをつけています。
postgresの起動オプションは、当初postmaster -B 512 -N 64 -S -iでしたが
現在は、 -S -i だけにして様子を見ていましたが、やはり発生します。

また、頻繁に参照するフィールドには、インデックスをつけてみましたが
同様でした。

発生する状況としますと、スクリプトが呼び出された直後にエラーが
表示されます。

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to
allocate 5 bytes) in
/usr/local/apache/htdocs/info.phtml on line 24

行番号や不足している旨のバイト数は様々です。
但し、最大でも13Mまでの不足なので、limit値を16Mにすれば
たいがいは回避できると思いますが、解決策ではないですよね。。。

今は、確実に発生するスクリプトを探しています。

なお、処理の内容としますと、あるテーブルをユニークなキーで
selectし1件のレコードを読んでくるものです。
selectの結果行は複数になることはありません。

後の手段は、
1)momory-limitオプションを付けずに再makeすること。
2)PHPを4.1.1に移行すること。
ぐらいかなと考えています。

1)の場合は解決策では無いと思っています。

現在のサイトのアクセスは、1日に10数人程度です。
10日程度経過すると、エラーが発生する状況です。

その際には、apacheを再起動すると現象はなくなります。

ちなみに、インストールログを以下に添付いたします。

install log:
****************************************************
PostgreSQL 7.1.3 install
****************************************************
user create postgres

postgres 7.1.3
./configure --enable-multibyte=EUC_JP
make
make install

bashrc に以下を追加
PATH="$PATH":/usr/local/pgsql/bin
export POSTGRES_HOME=/usr/local/pgsql
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=$POSTGRES_HOME/data
export MANPATH="$MANPATH":$POSTGRES_HOME/man
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"

initdb --pgdata=/usr/local/pgsql/data

//init.d
/*
/etc/rc.d/rc/localに以下の行を追加
su -l dbadmin -c "mv /usr/local/pgsql/log/server.log
/usr/local/pgsql/log/server.log.`date
'+%d%B%T'`;/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data start >
/usr/local/pgsql/log/server.log 2>&1"
*/

****************************************************
openssl install
****************************************************
tar zxvf openssl-0.9.6a.tar.gz
./config --openssldir=/usr/local/openssl
make clean; make;
make test
make install

****************************************************
apache ssl install
****************************************************
tar xvfz apache_1.3.20.tar.gz
tar zxvf mod_ssl-2.8.4-1.3.20.tar.gz
cd /usr/local/src/mod_ssl-2.8.4-1.3.20
./configure --with-apache=../apache_1.3.20

cd ../apache_1.3.20
SSL_BASE=/usr/local/openssl OPTIM="-O2" ./configure --enable-module=ssl
--enable-module=so
make
make install

自動起動設定
(rc.localの場合)
/etc/rc.d/rc/localに以下の行を追加
su -c "mv /usr/local/apache/logs/server.log
/usr/local/apache/logs/server.log.`date
'+%d%B%T'`;/usr/local/apache/bin/apachectl start >
/usr/local/apache/logs/server.log 2>&1"


****************************************************
php4.0.6 install
****************************************************
mbregexの時は./buildconfを行う。

./configure --enable-mbstring --enable-mbregex
--with-pgsql=/usr/local/pgsql --with-apxs=/usr/local/apache/bin/apxs
--enable-trans-sid --enable-track-vars --enable-versioning
make
make install
cp php.ini-dist /usr/local/lib/php.ini

Apache の設定ファイル /usr/local/apache/conf/httpd.conf を編集
LoadModule 項目の前に以下の行を追加
LoadFile /usr/local/pgsql/lib/libpq.so
AddType application/x-httpd-php .php .phtml
のコメント(行頭の # )をはずす.
DirectoryIndexにindex.phtmlを追加

以上

-- 
SEKIGUCHI Aptech inc.
PHP ML BOX
mailto:phpml@aptech.co.jp