php file loading performance

Hi,

I have php-cgi (compiled with --enable-fastcgi --enable-force-cgi-
redirect --enable-discard-path --with-mysql --with-mysqli --enable-
embedded-mysqli --with-zlib-dir=/usr/lib) being used by FastCGI
(FCGIWrapper) to load scripts. Even with a php accelerator (see
php.ini contents below), the binary itself is being kept running with
FastCGI as expected, but it still re-loads the php file itself with
the open( ) syscall every time the browser requests it. Does the sapi/
cgi php have an option to keep all the php files it's called in its
memory space and never touch the disk or call open( ) again?


in php.ini:
[............]
extension="apc.so"
apc.enabled=1
apc.shm_segments=1
apc.shm_size=128
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=1024
;apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.enable_cli=1
apc.include_once_override=1
apc.stat=0
[............]

Thx.

--
Blitzen
drblitzkrieg [ Mi, 30 Januar 2008 03:16 ] [ ID #1920309 ]

Re: php file loading performance

Blitzen wrote:

> Does the sapi/cgi php have an option to keep all the php files it's called
> in its memory space and never touch the disk or call open( ) again?

Why bother? The OS will have that file cached to memory...

--
----------------------------------
Iván Sánchez Ortega -ivansanchez-algarroba-escomposlinux-punto-org-

"The difference between pornography and erotica is lighting."
- Gloria Leonard
ivansanchez-alg [ Mi, 30 Januar 2008 12:08 ] [ ID #1920320 ]

Re: php file loading performance

On Jan 30, 1:08 pm, Iv=E1n S=E1nchez Ortega <ivansanchez-... [at] rroba-
escomposlinux.-.punto.-.org> wrote:
> Blitzen wrote:
> > Does the sapi/cgi php have an option to keep all the php files it's call=
ed
> > in its memory space and never touch the disk or call open( ) again?
>
> Why bother? The OS will have that file cached to memory...
>
> --
> ----------------------------------
> Iv=E1n S=E1nchez Ortega -ivansanchez-algarroba-escomposlinux-punto-org-
>
> "The difference between pornography and erotica is lighting."
> - Gloria Leonard

You may mount the apc temp path to a ramdisk(so the files will really
be in memory).
I dont know how apc is implemented, but most probably it will only
"intercept" opened files, but it will not disable the fopen() from php
with his own filehandlers. You may ask a question on the apc forum...
but it would be kinda dificult(read: needs lots of hacking, prone to
future bugs) to replace the fopen from php with an internal open from
the apc...

If you need fast file acceses, then disable atime when mounting the
partition with the php & apc cache scripts, and put them in a
ramdisk . I do belive that moving the apc cache to a ramdisk would be
enough, as it should check if a file had changed by only checking
filemtime(modify time).

Also pay attention to the used filesystem. from what i remember ext3
was faster for big files, while reiserfs was faster for smaller
files(this should be the case for the cache & php files). The only way
to reliable determine this is to test it yourself, there are many
flame wars started from benchmarking the file systems, with no real
conclusion in my opinion.
quamis [ Mi, 30 Januar 2008 16:30 ] [ ID #1920334 ]
PHP » comp.lang.php » php file loading performance

Vorheriges Thema: tutorial de PHP
Nächstes Thema: [newbie] Keeping it all in one page?