Re: [PHP4BETA] mem leak?
| From: | Gaylord Aulke | Date: | Mon, 13 Mar 2000 18:47:54 +0000 |
| Subject: | Re: [PHP4BETA] mem leak? | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-16759@lists.php.net to get a copy of this message | ||
mod_rewrite and mod_expire are crucial for our application so i could not
drop them for testing on the production machine. but as they are standard apache
modules used on many sites, i find them very unlikely to cause the memory
problem.
i compiled apache without libzmod and got the same problem. so it's apache
or it's standard modules or php, or?
any ideas?
regards,
gaylord aulke
agi, stuttgart, germany
http://www.agi.de
Andi Gutmans wrote:
> I'm not sure how to tackle this problem. (BTW, please Cc: php-dev when you
> send me mail because there might be people who have bumped into such
> behavior).
> Do you have a test server where youcan disable libzmod, mod_rewrite, and
> mod_expires just to cut it down to Apache core vs. PHP?
>
> Andi
>
> On Mon, 13 Mar 2000, Gaylord Aulke wrote:
>
> > in my opinion the only "strange" thing about the server configuration is
> > a module called "ZMOD" that's used to enable the apache to write
> > IVW-certified log files (http://www.ivw.de). this module is installed
> > on germany's biggest websites an so should be widely tested.
> >
> > i think the speed of memory-dropping is relative to the number of
> > accesses.
> >
> > i attached PHP and APACHE config.information to this mail.
> > you can also call http://knowone.de/test.php to get all
> > information
> > that's provided by phpinfo().
> >
> > gaylord
> >
> > apache-config:
> > ./configure \
> > "--with-layout=Apache" \
> > "--prefix=/usr/local/apache" \
> > "--activate-module=src/modules/zmod/libzmod.a" \
> > "--activate-module=src/modules/php4/libphp4.a" \
> > "--enable-module=rewrite" \
> > "--enable-module=expires" \
> > "$@"
> >
> > php-config:
> > Configure command: './configure' '--enable-track-vars'
> > '--disable-debug' '--with-mysql'
> > '--with-adabas=/opt/adabas'
> > '--with-apache=/usr/local/src/apache_1.3.11'
> > php.ini path: /usr/local/lib
> > ZEND_DEBUG=0
> > SAPI=Apache
> > ZTS is undefined
> >
> >
> >
> > Andi Gutmans wrote:
> >
> > > I'm cc'ing this to the php-dev list.
> > > What is your ./configure line for PHP?
> > > What about Apache? Do you use any modules such as mod_auth_mysql with your
> > > Apache server? It sounds too strange for it to be PHP but it might be.
> > > We have had no such leaks on our web server.
> > >
> > > Andi
> > >
> > > On Mon, 13 Mar 2000, Gaylord Aulke wrote:
> > >
> > > > i changed the settings you described and compiled php:
> > > > (
> > > > php:make clean
> > > > php:make
> > > > php:make install
> > > > apache:make
> > > > apache:make install
> > > > )
> > > > and restarted apache. unfortunately the behaviour did not change.
> > > > i included the top-output after 25 minutes at the end of this mail.
> > > >
> > > > (when starting apache, httpd had 0.3% of the machine's memory)
> > > > (the SIZE entry shows that each newly started httpd process allocates
> > > > more memory).
> > > >
> > > > regards,
> > > > gaylord aulke
> > > >
> > > >
> > > > 4:25pm up 8 days, 12:00, 6 users, load average: 1.15, 1.12, 1.01
> > > > 205 processes: 203 sleeping, 2 running, 0 zombie, 0 stopped
> > > > CPU states: 88.3% user, 11.6% system, 0.0% nice, 0.0% idle
> > > > Mem: 776892K av, 718084K used, 58808K free, 599264K shrd, 209908K buff
> > > > Swap: 1028120K av, 12076K used, 1016044K free 110800K cached
> > > >
> > > > PID USER PRI NI DSIZE SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND
> > > > 23549 adabas 17 -3 4082M 106M 102M 48088 R < 0 55.0 13.4 779:16
> > > > db:knowone
> > > > 23538 root 0 0 4020M 52968 51M 52872 S 0 0.0 6.8 0:00
> > > > db:knowone
> > > > 23545 adabas -3 -3 4023M 47040 45M 43900 S < 0 0.0 6.0 1:31
> > > > db:knowone
> > > > 23558 adabas 0 0 4020M 40404 39M 40304 S 0 0.0 5.1 0:17
> > > > db:knowone
> > > > 23559 adabas 0 0 4020M 40404 39M 40304 S 0 0.0 5.1 8:47
> > > > db:knowone
> > > > 23560 adabas 0 0 4020M 40404 39M 40304 S 0 0.0 5.1 0:17
> > > > db:knowone
> > > > 23561 adabas 0 0 4020M 40404 39M 40304 S 0 0.0 5.1 8:33
> > > > db:knowone
> > > > 23548 adabas -3 -3 4021M 7400 7344 7044 S < 0 0.0 0.9 0:00
> > > > db:knowone
> > > > 9776 wwwrun 0 0 3975M 6728 6728 2696 S 0 1.5 0.8 0:05 httpd
> > > > 9787 wwwrun 0 0 3975M 6472 6472 2732 S 0 1.1 0.8 0:05 httpd
> > > > 9779 wwwrun 0 0 3975M 6432 6432 2724 S 0 0.0 0.8 0:06 httpd
> > > > 9747 wwwrun 2 0 3977M 6376 6376 2720 S 0 0.7 0.8 0:05 httpd
> > > > 9791 wwwrun 0 0 3975M 6304 6304 2708 S 0 0.5 0.8 0:05 httpd
> > > > 9749 wwwrun 0 0 3974M 6224 6224 2656 S 0 0.9 0.8 0:05 httpd
> > > > 9806 wwwrun 0 0 3974M 6224 6224 2704 S 0 0.1 0.8 0:05 httpd
> > > > 9746 wwwrun 0 0 3974M 6208 6208 2648 S 0 0.0 0.7 0:04 httpd
> > > > 9766 wwwrun 0 0 3974M 6176 6176 2724 S 0 0.0 0.7 0:05 httpd
> > > > 9751 wwwrun 0 0 3974M 6156 6156 2704 S 0 0.7 0.7 0:04 httpd
> > > > 9763 wwwrun 0 0 3974M 6128 6128 2664 S 0 0.0 0.7 0:04 httpd
> > > > 9774 wwwrun 0 0 3974M 6120 6120 2704 S 0 0.0 0.7 0:04 httpd
> > > > 9764 wwwrun 0 0 3974M 6072 6072 2708 S 0 0.0 0.7 0:05 httpd
> > > > 9752 wwwrun 0 0 3974M 6040 6040 2716 S 0 0.3 0.7 0:05 httpd
> > > > 9772 wwwrun 0 0 3974M 6036 6036 2668 S 0 0.7 0.7 0:05 httpd
> > > > 9793 wwwrun 1 0 3974M 6028 6028 2664 S 0 1.8 0.7 0:04 httpd
> > > > 9786 wwwrun 0 0 3974M 5996 5996 2664 S 0 0.0 0.7 0:04 httpd
> > > > 9784 wwwrun 0 0 3974M 5980 5980 2664 S 0 0.0 0.7 0:04 httpd
> > > > 9759 wwwrun 0 0 3976M 5948 5948 2660 S 0 2.0 0.7 0:04 httpd
> > > > 9755 wwwrun 0 0 3974M 5940 5940 2668 S 0 0.0 0.7 0:04 httpd
> > > > 9750 wwwrun 0 0 3974M 5928 5928 2656 S 0 0.0 0.7 0:05 httpd
> > > > 9783 wwwrun 0 0 3974M 5928 5928 2724 S 0 0.0 0.7 0:04 httpd
> > > > 9794 wwwrun 0 0 3974M 5920 5920 2660 S 0 0.5 0.7 0:04 httpd
> > > > 9785 wwwrun 0 0 3974M 5904 5904 2668 S 0 0.0 0.7 0:04 httpd
> > > > 9802 wwwrun 0 0 3974M 5900 5900 2720 S 0 0.0 0.7 0:04 httpd
> > > > 9796 wwwrun 0 0 3974M 5896 5896 2656 S 0 0.0 0.7 0:05 httpd
> > > > 9748 wwwrun 0 0 3974M 5884 5884 2652 S 0 0.0 0.7 0:04 httpd
> > > > 9789 wwwrun 0 0 3974M 5880 5880 2668 S 0 0.0 0.7 0:05 httpd
> > > > 9788 wwwrun 1 0 3974M 5876 5876 2652 S 0 0.9 0.7 0:05 httpd
> > > > 9767 wwwrun 0 0 3974M 5864 5864 2728 S 0 0.0 0.7 0:05 httpd
> > > >
> > > >
> > > > Andi Gutmans wrote:
> > > >
> > > > > Please edit zend_fast_cache.h in the Zend/ directory and a line after
> > > > > #define _ZEND_FAST_CACHE_H
> > > > > add
> > > > > #define ZEND_ENABLE_FAST_CACHE 0
> > > > > Also edit zend_alloc.h and change
> > > > > MAX_CACHED_MEMORY to 1
> > > > > and
> > > > > MAX_CACHED_ENTRIES to 1
> > > > >
> > > > > See if this changes anything.
> > > > >
> > > > > Andi
> > > > >
> > > > > On Mon, 13 Mar 2000, Gaylord Aulke wrote:
> > > > >
> > > > > > hi,
> > > > > >
> > > > > > we tested a little bit more today and found the following strange
> > > > > > phenomenon:
> > > > > > we start apache and every httpd uses 0.6% of the available memory
> > > > > > (according
> > > > > > to "top").
> > > > > >
> > > > > > while running, this percentage increases step by step. after 6 hours,
> > > > > > every httpd
> > > > > > uses 1.2% of the available memory. httpd's are started and
> > > > > > stopped correctly.
> > > > > > we have a minimum of 20 servers, 20 min.spare and 40 max. spare. the
> > > > > > number
> > > > > > of httpds changes frequently. the size of newly started httpds
> > > > > > increases as
> > > > > > said above (1.4% now).
> > > > > >
> > > > > > in my opinion the amount of shared memory the apache processes use
> > > > > > increases.
> > > > > > does this make sense? can it be PHP?
> > > > > >
> > > > > > regards,
> > > > > > gaylord aulke
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > Andi Gutmans wrote:
> > > > > >
> > > > > > > Sound strange. There are some inter-request cache's but I
> > > > > > > don't think they
> > > > > > > are 500KB of size. Although if the size doesn't grow this
> > > > > > > might be it. Did
> > > > > > > you compile with --disable-debug?
> > > > > > >
> > > > > > > Andi
> > > > > > >
> > > > > > > At 11:35 PM 3/12/00 +0100, Gaylord Aulke wrote:
> > > > > > > >we are currently analyzing the system to track down the cause
> > > > > > > >of the
> > > > > > > >memory leak. could also be syslogd or some other component.
> > > > > > > >
> > > > > > > >the system has an average of 96 HTTPDs open but sometimes
> > > > > > > >this number
> > > > > > > >increases to 230 for a few seconds.
> > > > > > > >
> > > > > > > >the machine has 768MB RAM. after apache is running for a few
> > > > > > > >minutes, it
> > > > > > > >starts
> > > > > > > >allocating more and more memory. 500-1000 KB in 5 seconds are
> > > > > > > >allocated
> > > > > > > >and not freed until apache is shut down.
> > > > > > > >
> > > > > > > >we switched back to PHP3 for now but start our 3rd
> > > > > > > >PHP4-Approach
> > > > > > > >tomorrow.
> > > > > > > >maybe we have more info then...
> > > > > > > >
> > > > > > > >gaylord aulke
> > > > > > > >agi, stuttgart, germany
> > > > > > > >
> > > > > > > >PS: (the site's name is
> > > > > > > >http://www.knowone.de)
> > > > > > > >
> > > > > > > >Andi Gutmans wrote:
> > > > > > > > >
> > > > > > > > > Well I'm not saying it isn't PHP but the fact
> > > > > > > > > that it's Beta doesn't mean
> > > > > > > > > much. We're actually quite close to a release
> > > > > > > > > candidate within a few weeks.
> > > > > > > > > PHP frees every requests memory automatically (even if
> > > > > > > > > the internal engine
> > > > > > > > > leaks) at the end of each request. Of course there
> > > > > > > > > could be a leak
> > > > > > > > > somewhere as there are some places which don't use
> > > > > > > > > the special memory
> > > > > > > > > manager but it would probably be a pretty isolated
> > > > > > > > > case.
> > > > > > > > > The only way we can debug your problem is if we have
> > > > > > > > > enough information as
> > > > > > > > > to when it happens. I'm aware it is hard for you
> > > > > > > > > to track this problem
> > > > > > > > down.
> > > > > > > > > By the way, do the httpd's keep on growing and
> > > > > > > > > growing? Or do they
> > > > > > > > > stabilize at a certain size?
> > > > > > > > >
> > > > > > > > > Andi
> > > > > > > > >
> > > > > > > > > At 02:20 AM 3/11/00 +0100, Gaylord Aulke wrote:
> > > > > > > > > >hmmm. i try to find out which script causes the mem
> > > > > > > > > >leak. it seems to
> > > > > > > > > >happen only with concurrent request. we had no
> > > > > > > > > >probs with our
> > > > > > > > > >inhouse test system. i am not even sure if it is
> > > > > > > > > >php that causes
> > > > > > > > > >the memory loss but it's the only
> > > > > > > > > >beta-software on the system...
> > > > > > > > > >
> > > > > > > > > >persistent connections did not work with my system
> > > > > > > > > >configuration,
> > > > > > > > > >so i use regular connects.
> > > > > > > > > >
> > > > > > > > > >gaylord aulke
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >Andi Gutmans wrote:
> > > > > > > > > > >
> > > > > > > > > > > As the script memory is completely freed
> > > > > > > > > > > after each request this
> > > > > > > > might have
> > > > > > > > > > > something to do with the ODBC/Adabas support
> > > > > > > > > > > you're using.
> > > > > > > > > > > Are you using persistent connections?
> > > > > > > > > > > Is there any chance you can find the script
> > > > > > > > > > > which is causing this
> > > > > > > > trouble
> > > > > > > > > > > and cut it down as much as possible?
> > > > > > > > > > >
> > > > > > > > > > > Andi
> > > > > > > > > > >
> > > > > > > > > > > At 11:35 PM 3/10/00 +0100, Gaylord Aulke
> > > > > > > > > > > wrote:
> > > > > > > > > > > >here my report:
> > > > > > > > > > > >we compiled and built the current cvs and
> > > > > > > > > > > >after that, the error did
> > > > > > > > > > not occur
> > > > > > > > > > > >anymore.
> > > > > > > > > > > >the memory leak that brings my server
> > > > > > > > > > > >down has increased by at least a
> > > > > > > > > > > >factor of
> > > > > > > > > > > >two after installing the new build.
> > > > > > > > > > > >
> > > > > > > > > > > >we switched back to php3.0.15 for now.
> > > > > > > > > > > >
> > > > > > > > > > > >gaylord aulke
> > > > > > > > > > > >
> > > > > > > > > > > >Gaylord Aulke wrote:
> > > > > > > > > > > >
> > > > > > > > > > > > > Okay, we are working on it.
> > > > > > > > > > > > > in the meantime we changed the
> > > > > > > > > > > > > script so that it frees all
> > > > > > > > > > odbc-results and
> > > > > > > > > > > > > closes the connection but the error
> > > > > > > > > > > > > still occurs.
> > > > > > > > > > > > >
> > > > > > > > > > > > > but the memory leak is much bigger
> > > > > > > > > > > > > than reported by this error
> > > > > > > > message.
> > > > > > > > > > > > > i think we currently have 100-200
> > > > > > > > > > > > > php-requests/minute and lose
> > > > > > > > > > 500KB every
> > > > > > > > > > > > > 5-6 seconds.
> > > > > > > > > > > > >
> > > > > > > > > > > > > if you need more info to locate the
> > > > > > > > > > > > > problem, please send me an
> > > > > > > > email. i
> > > > > > > > > > > > > can do some checks now on the
> > > > > > > > > > > > > running system with 280 users on it.
> > > > > > > > > > > > >
> > > > > > > > > > > > > regards,
> > > > > > > > > > > > > gaylord aulke
> > > > > > > > > > > > >
> > > > > > > > > > > > > Andi Gutmans wrote:
> > > > > > > > > > > > >
> > > > > > > > > > > > > > Can you please try and update
> > > > > > > > > > > > > > your Zend CVS tree and see if I
> > > > > > > > > > managed to
> > > > > > > > > > > > > > fix the problem. I think I
> > > > > > > > > > > > > > have found a leak but I'm not sure
> > > > > > > > this is
> > > > > > > > > > > > what
> > > > > > > > > > > > > > effected you.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > Andi
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > At 10:21 PM 3/10/00 +0100,
> > > > > > > > > > > > > > Gaylord Aulke wrote:
> > > > > > > > > > > > > > >hi,
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > >we have exactly the same
> > > > > > > > > > > > > > >problem. our apache keeps leaking
> > > > > > > > > > > > > > >memory. 500 MB in 2 Hours!
> > > > > > > > > > > > > > >And then the system swaps
> > > > > > > > > > > > > > >and dies.
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > >PHP4, CVS-Version
> > > > > > > > > > > > > > >03/10/2000
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > >message from error-log:
> > > > > > > > > > > > > > >zend_operators.c(741) :
> > > > > > > > > > > > > > >Freeing 0x08399DFC (3 bytes),
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > >>script=/home/www/knowone4/daheim/anzeige_aufgeben.php
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > >this message arrises every
> > > > > > > > > > > > > > >20 seconds.
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > >we are using ODBC/ADABAS
> > > > > > > > > > > > > > >and sessions. the same scripts
> > > > > > > > > > > > > > >work fine with the same
> > > > > > > > > > > > > > >apache and php3.
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > >anyone got an idea?
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > >btw: we are not freeing
> > > > > > > > > > > > > > >our odbc-results and connections. can
> > > > > > > > > > > > > > >this be the problem?
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > >regards,
> > > > > > > > > > > > > > >gaylord aulke
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > >Teodor Cimpoesu wrote:
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > ./zend_execute.c(1695) : Freeing 0x0818C8AC (12 bytes),
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > script=/opt/apache.fuel/htdocs/phorum/index.php
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > ./zend_execute.c(1695) : Freeing 0x0814C20C (12 bytes),
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > script=/opt/apache.fuel/htdocs/phorum/index.php
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > ./zend_execute.c(1695) : Freeing 0x08154DD4 (12 bytes),
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > script=/opt/apache.fuel/htdocs/phorum/index.php
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > ./zend_execute.c(1695) : Freeing 0x0815E05C (12 bytes),
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > script=/opt/apache.fuel/htdocs/phorum/index.php
> > > > > > > > > > > > > > > > (CVS snapshot of few
> > > > > > > > > > > > > > > > minutes ago)
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > The page producing
> > > > > > > > > > > > > > > > this is the index.php from phorum3.0.8
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > --
> > > > > > > > > > > > > > > > CIMPOESU Teodor, Web
> > > > > > > > > > > > > > > > Programmer
> > > > > > > > > > > > > > > > @ DIGICOM S.A.
> > > > > > > > > > > > > > > > Bucharest, Romania
> > > > > > > > > > > > > > > > @ Internet, site
> > > > > > > > > > > > > > > > development
> > > > > > > > > > > > > > > > @ see
> > > > > > > > > > > > > > > > http://internet.digiro.net/
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > --
> > > > > > > > > > > > > > > > PHP 4.0 Beta Mailing
> > > > > > > > > > > > > > > > List <http://www.php.net/version4/>
> > > > > > > > > > > > > > > > To unsubscribe,
> > > > > > > > > > > > > > > > e-mail: php4beta-unsubscribe@lists.php.net
> > > > > > > > > > > > > > > > For additional
> > > > > > > > > > > > > > > > commands, e-mail: php4beta-help@lists.php.net
> > > > > > > > > > > > > > > > To contact the list
> > > > > > > > > > > > > > > > administrators, e-mail:
> > > > > > > > > > > > php4beta-admin@lists.php.net
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > >--
> > > > > > > > > > > > > > >PHP 4.0 Beta Mailing List
> > > > > > > > > > > > > > ><http://www.php.net/version4/>
> > > > > > > > > > > > > > >To unsubscribe, e-mail:
> > > > > > > > > > > > > > >php4beta-unsubscribe@lists.php.net
> > > > > > > > > > > > > > >For additional commands,
> > > > > > > > > > > > > > >e-mail: php4beta-help@lists.php.net
> > > > > > > > > > > > > > >To contact the list
> > > > > > > > > > > > > > >administrators, e-mail:
> > > > > > > > > > php4beta-admin@lists.php.net
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > ---
> > > > > > > > > > > > > > Andi Gutmans
> > > > > > > > > > > > > > <andi@zend.com>
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > http://www.zend.com/
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > --
> > > > > > > > > > > > > > PHP 4.0 Beta Mailing List
> > > > > > > > > > > > > > <http://www.php.net/version4/>
> > > > > > > > > > > > > > To unsubscribe, e-mail:
> > > > > > > > > > > > > > php4beta-unsubscribe@lists.php.net
> > > > > > > > > > > > > > For additional commands,
> > > > > > > > > > > > > > e-mail: php4beta-help@lists.php.net
> > > > > > > > > > > > > > To contact the list
> > > > > > > > > > > > > > administrators, e-mail:
> > > > > > > > > > php4beta-admin@lists.php.net
> > > > > > > > > > > > >
> > > > > > > > > > > > > --
> > > > > > > > > > > > > PHP 4.0 Beta Mailing List
> > > > > > > > > > > > > <http://www.php.net/version4/>
> > > > > > > > > > > > > To unsubscribe, e-mail:
> > > > > > > > > > > > > php4beta-unsubscribe@lists.php.net
> > > > > > > > > > > > > For additional commands, e-mail:
> > > > > > > > > > > > > php4beta-help@lists.php.net
> > > > > > > > > > > > > To contact the list administrators,
> > > > > > > > > > > > > e-mail:
> > > > > > > > > > php4beta-admin@lists.php.net
> > > > > > > > > > >
> > > > > > > > > > > ---
> > > > > > > > > > > Andi Gutmans <andi@zend.com>
> > > > > > > > > > >
> > > > > > > > > > > http://www.zend.com/
> > > > > > > > >
> > > > > > > > > ---
> > > > > > > > > Andi Gutmans <andi@zend.com>
> > > > > > > > > http://www.zend.com/
> > > > > > >
> > > > > > > ---
> > > > > > > Andi Gutmans <andi@zend.com>
> > > > > > > http://www.zend.com/
> > > > > >
> > > >
> >