There are many caching system in use to optimize the execution of PHP script on busy web/database servers. Today we will focus on the OPcode caching method using APC.
Before we start… what is an OPcode? The OPcode is an executable code generated each time a PHP script is interpreted and compiled. Each time you visit a webpage, the webserver (apache for example) would generate an OPcode of the PHP script serving your request. They are therefore simply C data structure which are interpreted by the PHP Virtual Machine (Zend Engine).
Now you can imagine, generating the OPcode can be a drain on the server and quite useless if the code does not change often. This is where the OPcode caching system comes into play; but before we go on, let’s see some OPcode example using the Vulcan Logic Disassembler.
First, we create a file test.php in which we will execute a unix ls -l command
test.php - <? system(“ls -l”); ?>
wrk01:/var/www# php -d vld.active=1 test.php Branch analysis from position: 0 Return found filename: /var/www/test.php function name: (null) number of ops: 4 compiled vars: none
line # op fetch ext return operands 2 0 SEND_VAL ‘ls+-l’ 1 DO_FCALL 1 ‘system’ 4 2 RETURN 1 3* ZEND_HANDLE_EXCEPTION
Now let’s try a simple ( echo “hello world!” )