이 글에서는 Linux 환경에서 PHP7.0을 설치하는 방법을 소개합니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.
PHP7과 HHVM의 비교
실제 시나리오에서 PHP7의 성능은 실제로 HHVM과 동일하며 일부 시나리오에서는 HHVM을 초과하기도 합니다. HHVM의 운영 및 유지 관리는 복잡하며 다중 스레드 모델입니다. 즉, 스레드로 인해 충돌이 발생하면 전체 서비스가 중단되고 자동으로 다시 시작되지 않습니다. 또한 JIT를 사용하는데, 이는 다시 시작한 후 예열이 필요하다는 것을 의미합니다. 예열하지 않으면 성능이 저하됩니다. 게다가 멀티스레드 모델은 디버깅이 어려워 안정성을 추구하는 웹 서비스에는 매우 부적합하다.
Nginx 및 PHP7.0 이전 버전은 다음 기사를 참조할 수 있습니다: Linux 환경 Nginx 설치 및 디버깅 및 PHP 설치
PHP7.0의 공식 버전은 2015년 11월쯤 출시되었습니다. 현재 PHP7.0.2 버전입니다. 2015년 8월 php7의 첫 번째 베타 버전으로 시작하여 현재 정식 버전이 출시되었습니다.
linux 버전: 64비트 CentOS 6.6
Nginx 버전: nginx1.8.0
php 버전: php-7.0.2
Download
# wget http://php.net/get/php-7.0.2.tar.gz/from/a/mirror
설치하기 전에 설치 도움말 파일을 읽어보는 것이 좋습니다. install
# tar zxvf php-7.0.2.tar.gz # cd php-7.0.2
먼저 설치 도움말을 확인하세요
# ./configure --help # ./configure --prefix=/usr/local/php \ --with-curl \ --with-freetype-dir \ --with-gd \ --with-gettext \ --with-iconv-dir \ --with-kerberos \ --with-libdir=lib64 \ --with-libxml-dir \ --with-mysqli \ --with-openssl \ --with-pcre-regex \ --with-pdo-mysql \ --with-pdo-sqlite \ --with-pear \ --with-png-dir \ --with-xmlrpc \ --with-xsl \ --with-zlib \ --enable-fpm \ --enable-bcmath \ --enable-libxml \ --enable-inline-optimization \ --enable-gd-native-ttf \ --enable-mbregex \ --enable-mbstring \ --enable-opcache \ --enable-pcntl \ --enable-shmop \ --enable-soap \ --enable-sockets \ --enable-sysvsem \ --enable-xml \ --enable-zip
구성이 잘못된 경우 필요한 모듈을 직접 설치해야 하며, 종속 라이브러리를 함께 설치하려면 직접 yum
# yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel mysql pcre-devel
참고: 구성할 수 없는 구성이 여러 가지 있습니다. php7beta3을 설치할 때 yum을 해야 합니다. 이제 php- 7.0.2에서는 더 이상 그렇지 않습니다.
# yum -y install curl-devel # yum -y install libxslt-devel
# make && make install
구성 파일
# cp php.ini-development /usr/local/php/lib/php.ini # cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf # cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf # cp -R ./sapi/fpm/php-fpm /etc/init.d/php-fpm
주의할 점은 php7의 www.conf 구성 파일에서 phpfpm의 포트 번호와 기타 정보를 구성한다는 점입니다. 기본 포트 번호 9000을 수정하면, 그런 다음 nginx 구성을 변경해야 합니다
Start
# /etc/init.d/php-fpm
View phpinfo()
php7 및 php5 성능 분석 비교
<?php //time /usr/local/php5/bin/php search_by_key.php $a = array(); for($i=0;$i<600000;$i++){ $a[$i] = $i; } foreach($a as $i) { array_key_exists($i, $a); } ?>
600,000개 요소의 배열 생성 , 키를 찾아 확인합니다. 키가 존재하는지 여부를 확인합니다.
PHP 버전 5.4.44
[root@localhost www5.4.44]# time /usr/local/php5.4.44/bin/php search_by_key.php
real 0m0.351s
user 0m0.300s
sys 0m0 .050s
PHP 버전 5.5.28
[root@localhost www]# 시간 /usr/local/php/bin/php search_by_key.php
real 0m0.361s
user 0m0.304s
sys 0m0.05 7s
PHP 버전 7.0.0
[root@localhost www7]# time /usr/local/php7/bin/php search_by_key.php
real 0m0.114s
user 0m0.097s
sys 0m0.017s
php7의 성능이 php5의 3배인 것은 당연합니다!
opcache 구성
공식 웹사이트 주소: http://php.net/opcache
더 나은 성능을 얻으려면 다음 권장 설정을 사용하세요.
opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 opcache.fast_shutdown=1 opcache.enable_cli=1
opcache.save_comments를 비활성화하고 opcache.enable_file_override를 활성화할 수도 있습니다. 위의 구성은 프로덕션 환경에서 사용하기 전에 엄격하게 테스트되어야 한다는 점을 기억해야 합니다. 위 구성에는 알려진 문제가 있으므로 일부 프레임워크 및 애플리케이션, 특히 주석 주석을 사용하는 문서가 있는 경우 예외가 발생합니다.
vim /usr/local/php7/etc/php.ini
# Join
Restart
# killall php-fpm # /etc/init.d/php-fpm
위 그림이 선명하지 않다면 글 마지막에 있는 Opcache 상태 테스트 코드를 이용하시면 됩니다 (https://gist.github.com/ck-on) /4959032) 데모용:
Opcache 상태 테스트 코드(https://gist.github.com/ck-on/4959032) 데모용:
f2c857413066c5365d7eac315851cb9b1 || php_sapi_name()=='cli' || empty($_SERVER['REMOTE_ADDR']) ) { die; } // weak block against indirect access $time=time(); define('CACHEPREFIX',function_exists('opcache_reset')?'opcache_':(function_exists('accelerator_reset')?'accelerator_':'')); if ( !empty($_GET['RESET']) ) { if ( function_exists(CACHEPREFIX.'reset') ) { call_user_func(CACHEPREFIX.'reset'); } header( 'Location: '.str_replace('?'.$_SERVER['QUERY_STRING'],'',$_SERVER['REQUEST_URI']) ); exit; } if ( !empty($_GET['RECHECK']) ) { if ( function_exists(CACHEPREFIX.'invalidate') ) { $recheck=trim($_GET['RECHECK']); $files=call_user_func(CACHEPREFIX.'get_status'); if (!empty($files['scripts'])) { foreach ($files['scripts'] as $file=>$value) { if ( $recheck==='1' || strpos($file,$recheck)===0 ) call_user_func(CACHEPREFIX.'invalidate',$file); } } header( 'Location: '.str_replace('?'.$_SERVER['QUERY_STRING'],'',$_SERVER['REQUEST_URI']) ); } else { echo 'Sorry, this feature requires Zend Opcache newer than April 8th 2013'; } exit; } ?>76c82f278ac045591c9159d381de2c57 100db36a723c770d327fc0aef2ce13b1 93f0f5c25f18dab9d176bd4f6de5d30e b2386ffb911b14667cb8f0f91ea547a7OCP - Opcache Control Panel6e916e0f7d1e588d4f442bf645aedb2f 72f2be85e271a004ecf14fd9848d8875 46d5fe1c7617e3914f214aaf043f4ccf body {background-color: #fff; color: #000;} body, td, th, h1, h2 {font-family: sans-serif;} pre {margin: 0px; font-family: monospace;} a:link,a:visited {color: #000099; text-decoration: none;} a:hover {text-decoration: underline;} table {border-collapse: collapse; width: 600px; } .center {text-align: center;} .center table { margin-left: auto; margin-right: auto; text-align: left;} .center th { text-align: center !important; } .middle {vertical-align:middle;} td, th { border: 1px solid #000; font-size: 75%; vertical-align: baseline; padding: 3px; } h1 {font-size: 150%;} h2 {font-size: 125%;} .p {text-align: left;} .e {background-color: #ccccff; font-weight: bold; color: #000; width:50%; white-space:nowrap;} .h {background-color: #9999cc; font-weight: bold; color: #000;} .v {background-color: #cccccc; color: #000;} .vr {background-color: #cccccc; text-align: right; color: #000; white-space: nowrap;} .b {font-weight:bold;} .white, .white a {color:#fff;} img {float: right; border: 0px;} hr {width: 600px; background-color: #cccccc; border: 0px; height: 1px; color: #000;} .meta, .small {font-size: 75%; } .meta {margin: 2em 0;} .meta a, th a {padding: 10px; white-space:nowrap; } .buttons {margin:0 0 1em;} .buttons a {margin:0 15px; background-color: #9999cc; color:#fff; text-decoration:none; padding:1px; border:1px solid #000; display:inline-block; width:5em; text-align:center;} #files td.v a {font-weight:bold; color:#9999cc; margin:0 10px 0 5px; text-decoration:none; font-size:120%;} #files td.v a:hover {font-weight:bold; color:#ee0000;} .graph {display:inline-block; width:145px; margin:1em 0 1em 1px; border:0; vertical-align:top;} .graph table {width:100%; height:150px; border:0; padding:0; margin:5px 0 0 0; position:relative;} .graph td {vertical-align:middle; border:0; padding:0 0 0 5px;} .graph .bar {width:25px; text-align:right; padding:0 2px; color:#fff;} .graph .total {width:34px; text-align:center; padding:0 5px 0 0;} .graph .total p {border:1px dashed #888; border-right:0; height:99%; width:12px; position:absolute; bottom:0; left:17px; z-index:-1;} .graph .total span {background:#fff; font-weight:bold;} .graph .actual {text-align:right; font-weight:bold; padding:0 5px 0 0;} .graph .red {background:#ee0000;} .graph .green {background:#00cc00;} .graph .brown {background:#8B4513;} 531ac245ce3e4fe3d50054a55f265927 d66b6fe9f75f6ac145f99b7cc5a3266776cd4913e6ee9a69d0dba4fc797cdc00 window.οnlοad=function(){var i,t=document.getElementsByTagName('table');for(i=0;ifdfb08ac3038e2ee43824db4e392ff5c1b771f47d72d900ba74308aee59557f0 9c3bca370b5104690d9ef395f2c5f8d1 6c04bd5ca3fcae76e30b72ad730ca86d c542d7f3f87eec811bf2889d9516e9cc 4a249f0d628e2318394fd9b75b4636b1fcc1254b375d92b1e9d1d060f1cca1feOpcache Control Panel5db79b134e9f6b82c0b36e0489ee08ed473f0a7621bec819994bb5020d29372a 5854fa88d579fae799b3987b589adf23 20e35c005ba35d5f63cc6e3bcf270fe9Details5db79b134e9f6b82c0b36e0489ee08ed 99aa3dc4197ceda57bd2cb270752eaacFiles5db79b134e9f6b82c0b36e0489ee08ed 32ba2e881dcc9d5030023e6af7053222Reset5db79b134e9f6b82c0b36e0489ee08ed 9fd478278e5ea7dd61c308d801bd5fcd 58cda7e2438cd51409f5eab76bbd8121Recheck5db79b134e9f6b82c0b36e0489ee08ed be87d491f710a70a3787e6e56494aad5 1941c9d00dd252ee8ced7683507028a1Refresh5db79b134e9f6b82c0b36e0489ee08ed 94b3e26ee717c64999d7867364b1b4a3 aefab9edc996e86e93af9e277ccf18f9Opcache not detected?2e9b454fa8428549ca2e64dfac4625cd'; die; } if ( !empty($_GET['FILES']) ) { echo 'c1a436a314ed609750bd7c7d319db4dafiles cached2e9b454fa8428549ca2e64dfac4625cd'; files_display(); echo '94b3e26ee717c64999d7867364b1b4a336cc49f0c466276486e50c850b7e495673a6ac4ed44ffec12cee46588e518a5e'; exit; } if ( !(isset($_REQUEST['GRAPHS']) && !$_REQUEST['GRAPHS']) && CACHEPREFIX=='opcache_') { graphs_display(); if ( !empty($_REQUEST['GRAPHS']) ) { exit; } } ob_start(); phpinfo(8); $phpinfo = ob_get_contents(); ob_end_clean(); // some info is only available via phpinfo? sadly buffering capture has to be used if ( !preg_match( '/module\_Zend (Optimizer\+|OPcache).+?(\4f8b7a22edf23d5bf38996387821347e]*\>.+?\4eee706fb8786876e00135b644b8cef2).+?(\4f8b7a22edf23d5bf38996387821347e]*\>.+?\4eee706fb8786876e00135b644b8cef2)/s', $phpinfo, $opcache) ) { } // todo if ( function_exists(CACHEPREFIX.'get_configuration') ) { echo 'c1a436a314ed609750bd7c7d319db4dageneral2e9b454fa8428549ca2e64dfac4625cd'; $configuration=call_user_func(CACHEPREFIX.'get_configuration'); } $host=function_exists('gethostname')?@gethostname():@php_uname('n'); if (empty($host)) { $host=empty($_SERVER['SERVER_NAME'])?$_SERVER['HOST_NAME']:$_SERVER['SERVER_NAME']; } $version=array('Host'=>$host); $version['PHP Version']='PHP '.(defined('PHP_VERSION')?PHP_VERSION:'???').' '.(defined('PHP_SAPI')?PHP_SAPI:'').' '.(defined('PHP_OS')?' '.PHP_OS:''); $version['Opcache Version']=empty($configuration['version']['version'])?'???':$configuration['version'][CACHEPREFIX.'product_name'].' '.$configuration['version']['version']; print_table($version); if ( !empty($opcache[2]) ) { echo preg_replace('/\6413c30a808a5950937c101d6a9c16bb\ea974c0e03abeedee78cb9f3559107c3[^>]+\baefcfa57b5fe2f66c16d2b4f1c9a085\96897fa64db216327b574d71610d0784[0-9\,\. ]+\baefcfa57b5fe2f66c16d2b4f1c9a085\e6795ba1c3bcc57c19b9db0278253a15/','',$opcache[2]); } if ( function_exists(CACHEPREFIX.'get_status') && $status=call_user_func(CACHEPREFIX.'get_status') ) { $uptime=array(); if ( !empty($status[CACHEPREFIX.'statistics']['start_time']) ) { $uptime['uptime']=time_since($time,$status[CACHEPREFIX.'statistics']['start_time'],1,''); } if ( !empty($status[CACHEPREFIX.'statistics']['last_restart_time']) ) { $uptime['last_restart']=time_since($time,$status[CACHEPREFIX.'statistics']['last_restart_time']); } if (!empty($uptime)) {print_table($uptime);} if ( !empty($status['cache_full']) ) { $status['memory_usage']['cache_full']=$status['cache_full']; } echo '4aaafa228026c78871615d9d3ae953ebmemory2e9b454fa8428549ca2e64dfac4625cd'; print_table($status['memory_usage']); unset($status[CACHEPREFIX.'statistics']['start_time'],$status[CACHEPREFIX.'statistics']['last_restart_time']); echo 'bb51ad82b94f7c7104599f9b3b0932b2statistics2e9b454fa8428549ca2e64dfac4625cd'; print_table($status[CACHEPREFIX.'statistics']); } if ( empty($_GET['ALL']) ) { meta_display(); exit; } if ( !empty($configuration['blacklist']) ) { echo '566b0986732f2186f01a79f94ecadeaeblacklist2e9b454fa8428549ca2e64dfac4625cd'; print_table($configuration['blacklist']); } if ( !empty($opcache[3]) ) { echo '2101fd1fdc75051e51a66268998b9d2aruntime2e9b454fa8428549ca2e64dfac4625cd'; echo $opcache[3]; } $name='zend opcache'; $functions=get_extension_funcs($name); if (!$functions) { $name='zend optimizer+'; $functions=get_extension_funcs($name); } if ($functions) { echo '56efb9287f6094f1555dabd151d58aa8functions2e9b454fa8428549ca2e64dfac4625cd'; print_table($functions); } else { $name=''; } $level=trim(CACHEPREFIX,'_').'.optimization_level'; if (isset($configuration['directives'][$level])) { echo '1b2b8b3f2ba400b440fe680a4f139ffeoptimization levels2e9b454fa8428549ca2e64dfac4625cd'; $levelset=strrev(base_convert($configuration['directives'][$level], 10, 2)); $levels=array( 1=>'2652aebc852cc8b190e8f49cbe0e3ac9Constants subexpressions elimination5db79b134e9f6b82c0b36e0489ee08ed (CSE) true, false, null, etc.ff9d32c555bb1d9133a29eb4371c1213Optimize series of ADD_STRING / ADD_CHARff9d32c555bb1d9133a29eb4371c1213Convert CAST(IS_BOOL,x) into BOOL(x)ff9d32c555bb1d9133a29eb4371c1213Convert 9150a1c93a59430b405dae150228ef82INIT_FCALL_BY_NAME5db79b134e9f6b82c0b36e0489ee08ed + eb7aac403842174b9977332c913b4a70DO_FCALL_BY_NAME5db79b134e9f6b82c0b36e0489ee08ed into 8bf61b78f5272e32f5dc50362339a2a3DO_FCALL5db79b134e9f6b82c0b36e0489ee08ed', 2=>'Convert constant operands to expected typesff9d32c555bb1d9133a29eb4371c1213Convert conditional 7da1497297ab82f4a1bf57405d3a4c96JMP5db79b134e9f6b82c0b36e0489ee08ed with constant operandsff9d32c555bb1d9133a29eb4371c1213Optimize static 5b49683c5ff578dd6dfae760926ed3bfBRK5db79b134e9f6b82c0b36e0489ee08ed and fd98f2b1021e66463aa42e99e46e1b44CONT5db79b134e9f6b82c0b36e0489ee08ed', 3=>'Convert $a = $a + expr into $a += exprff9d32c555bb1d9133a29eb4371c1213Convert $a++ into ++$aff9d32c555bb1d9133a29eb4371c1213Optimize series of 7da1497297ab82f4a1bf57405d3a4c96JMP5db79b134e9f6b82c0b36e0489ee08ed', 4=>'PRINT and ECHO optimization (1876b35fe7ff948d1b3389eaf63083ccdefunct5db79b134e9f6b82c0b36e0489ee08ed)', 5=>'Block Optimization - most expensive passff9d32c555bb1d9133a29eb4371c1213Performs many different optimization patterns based on ef5eb4caf8ba9dbc4495d802c92c2a8econtrol flow graph5db79b134e9f6b82c0b36e0489ee08ed (CFG)', 9=>'Optimize 24a2df801c71176073c167561fa3629cregister allocation5db79b134e9f6b82c0b36e0489ee08ed (allows re-usage of temporary variables)', 10=>'Remove NOPs' ); echo '800ef53f35afc5a667c8bd93aea7816792cee25da80fac49f6fb6eec5fd2c22aeaeb0b522ce50eb1e38d703ebe0bc2a2b4d429308760b6c2d20d6300079ed38ePass01c3ce868d2b3d9bce8da5c1b7e41e5bb4d429308760b6c2d20d6300079ed38eDescription01c3ce868d2b3d9bce8da5c1b7e41e5bfd273fcf5bcad3dfdad3c41bd81ad3e5'; foreach ($levels as $pass=>$description) { $disabled=substr($levelset,$pass-1,1)!=='1' || $pass==4 ? ' white':''; echo 'a34de1251f0d9fe1e645927f19a896e81e2f8ff6ac31482a484ded50ffa38bef'.$pass.'b90dd5946f0946207856a8a37f441edfbfc89600001c0059adebbc882180aef4'.$description.'b90dd5946f0946207856a8a37f441edffd273fcf5bcad3dfdad3c41bd81ad3e5'; } echo 'f16b1740fad44fb09bfe928bcc527e08'; } if ( isset($_GET['DUMP']) ) { if ($name) { echo 'd8073fd67c93be8d5c28af4cbd4cf412ini2e9b454fa8428549ca2e64dfac4625cd'; print_table(ini_get_all($name,true)); } foreach ($configuration as $key=>$value) { echo 'c1a436a314ed609750bd7c7d319db4da',$key,'2e9b454fa8428549ca2e64dfac4625cd'; print_table($configuration[$key]); } exit; } meta_display(); echo '94b3e26ee717c64999d7867364b1b4a336cc49f0c466276486e50c850b7e495673a6ac4ed44ffec12cee46588e518a5e'; exit; function time_since($time,$original,$extended=0,$text='ago') { $time = $time - $original; $day = $extended? floor($time/86400) : round($time/86400,0); $amount=0; $unit=''; if ( $time 5811fae82e39328c80e1636b79c55efa60) { $text=' and '.time_since($time,$timefc73ad34d7cec5906049d4f6bea52fd0'; if (!empty($headers)) { if (!is_array($headers)) {$headers=array_keys(reset($array));} echo 'eaeb0b522ce50eb1e38d703ebe0bc2a2'; foreach ($headers as $value) { echo 'b4d429308760b6c2d20d6300079ed38e',$value,'01c3ce868d2b3d9bce8da5c1b7e41e5b'; } echo 'fd273fcf5bcad3dfdad3c41bd81ad3e5'; } foreach ($array as $key=>$value) { echo 'a34de1251f0d9fe1e645927f19a896e8'; if ( !is_numeric($key) ) { $key=ucwords(str_replace('_',' ',$key)); echo 'a733cec0a564ee3f05793300dc66c1cb',$key,'b90dd5946f0946207856a8a37f441edf'; if ( is_numeric($value) ) { if ( $value>1048576) { $value=round($value/1048576,1).'M'; } elseif ( is_float($value) ) { $value=round($value,1); } } } if ( is_array($value) ) { foreach ($value as $column) { echo '5949ac2d86acd927a5b4d1ba988bed22',$column,'b90dd5946f0946207856a8a37f441edf'; } echo 'fd273fcf5bcad3dfdad3c41bd81ad3e5'; } else { echo '5949ac2d86acd927a5b4d1ba988bed22',$value,'b90dd5946f0946207856a8a37f441edffd273fcf5bcad3dfdad3c41bd81ad3e5'; } } echo 'f16b1740fad44fb09bfe928bcc527e08'; } function files_display() { $status=call_user_func(CACHEPREFIX.'get_status'); if ( empty($status['scripts']) ) {return;} if ( isset($_GET['DUMP']) ) { print_table($status['scripts']); exit;} $time=time(); $sort=0; $nogroup=preg_replace('/\&?GROUP\=[\-0-9]+/','',$_SERVER['REQUEST_URI']); $nosort=preg_replace('/\&?SORT\=[\-0-9]+/','',$_SERVER['REQUEST_URI']); $group=empty($_GET['GROUP'])?0:intval($_GET['GROUP']); if ( $group37fd678b377b98a1fd2de17a10ccd9d69) { $group=1;} $groupset=array_fill(0,9,''); $groupset[$group]=' class="b" '; echo 'c3dc30fa0edaf702eedbc2e04421d43b ee07ccca0b4425b5d76efb8e339bb19eungroup5db79b134e9f6b82c0b36e0489ee08ed | 06a7e3a94da744f8a76aa5688e125c0915db79b134e9f6b82c0b36e0489ee08ed | 3bebc0fddcde83c5f9cc7b046bef83d825db79b134e9f6b82c0b36e0489ee08ed | a1c41aecf1f23e94da461e7ce92a28e535db79b134e9f6b82c0b36e0489ee08ed | 4e851fee3521255aeda8b829816599cb45db79b134e9f6b82c0b36e0489ee08ed | f4e5e27fde256d9b419d903a673f087e55db79b134e9f6b82c0b36e0489ee08ed 94b3e26ee717c64999d7867364b1b4a3'; if ( !$group ) { $files =& $status['scripts']; } else { $files=array(); foreach ($status['scripts'] as $data) { if ( preg_match('@^[/]([^/]+[/]){'.$group.'}@',$data['full_path'],$path) ) { if ( empty($files[$path[0]])) { $files[$path[0]]=array('full_path'=>'','files'=>0,'hits'=>0,'memory_consumption'=>0,'last_used_timestamp'=>'','timestamp'=>''); } $files[$path[0]]['full_path']=$path[0]; $files[$path[0]]['files']++; $files[$path[0]]['memory_consumption']+=$data['memory_consumption']; $files[$path[0]]['hits']+=$data['hits']; if ( $data['last_used_timestamp']>$files[$path[0]]['last_used_timestamp']) {$files[$path[0]]['last_used_timestamp']=$data['last_used_timestamp'];} if ( $data['timestamp']>$files[$path[0]]['timestamp']) {$files[$path[0]]['timestamp']=$data['timestamp'];} } } } if ( !empty($_GET['SORT']) ) { $keys=array( 'full_path'=>SORT_STRING, 'files'=>SORT_NUMERIC, 'memory_consumption'=>SORT_NUMERIC, 'hits'=>SORT_NUMERIC, 'last_used_timestamp'=>SORT_NUMERIC, 'timestamp'=>SORT_NUMERIC ); $titles=array('','path',$group?'files':'','size','hits','last used','created'); $offsets=array_keys($keys); $key=intval($_GET['SORT']); $direction=$key>0?1:-1; $key=abs($key)-1; $key=isset($offsets[$key])&&!($key==1&&empty($group))?$offsets[$key]:reset($offsets); $sort=array_search($key,$offsets)+1; $sortflip=range(0,7); $sortflip[$sort]=-$direction*$sort; if ( $keys[$key]==SORT_STRING) {$direction=-$direction; } $arrow=array_fill(0,7,''); $arrow[$sort]=$direction>0?' ▼':' ▲'; $direction=$direction>0?SORT_DESC:SORT_ASC; $column=array(); foreach ($files as $data) { $column[]=$data[$key]; } array_multisort($column, $keys[$key], $direction, $files); } echo 'dade791deac709c04a563e7957b61384 eaeb0b522ce50eb1e38d703ebe0bc2a2'; foreach ($titles as $column=>$title) { if ($title) echo 'b4d429308760b6c2d20d6300079ed38ecbb824bca0ce92b8d1ef1f292fa85ed5',$title,$arrow[$column],'5db79b134e9f6b82c0b36e0489ee08ed01c3ce868d2b3d9bce8da5c1b7e41e5b'; } echo ' fd273fcf5bcad3dfdad3c41bd81ad3e5'; foreach ($files as $data) { echo 'a34de1251f0d9fe1e645927f19a896e8 8cd4e76ed77fc7d2d288610e007640c496d3b696b6b366d35c8d7361abe884f2x5db79b134e9f6b82c0b36e0489ee08ed',$data['full_path'],'b90dd5946f0946207856a8a37f441edf', ($group?'118be22d02274b184dfb42470aee4d00'.number_format($data['files']).'b90dd5946f0946207856a8a37f441edf':''), '118be22d02274b184dfb42470aee4d00',number_format(round($data['memory_consumption']/1024)),'Kb90dd5946f0946207856a8a37f441edf', '118be22d02274b184dfb42470aee4d00',number_format($data['hits']),'b90dd5946f0946207856a8a37f441edf', '118be22d02274b184dfb42470aee4d00',time_since($time,$data['last_used_timestamp']),'b90dd5946f0946207856a8a37f441edf', '118be22d02274b184dfb42470aee4d00',empty($data['timestamp'])?'':time_since($time,$data['timestamp']),'b90dd5946f0946207856a8a37f441edf fd273fcf5bcad3dfdad3c41bd81ad3e5'; } echo 'f16b1740fad44fb09bfe928bcc527e08'; } function graphs_display() { $graphs=array(); $colors=array('green','brown','red'); $primes=array(223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987); $configuration=call_user_func(CACHEPREFIX.'get_configuration'); $status=call_user_func(CACHEPREFIX.'get_status'); $graphs['memory']['total']=$configuration['directives']['opcache.memory_consumption']; $graphs['memory']['free']=$status['memory_usage']['free_memory']; $graphs['memory']['used']=$status['memory_usage']['used_memory']; $graphs['memory']['wasted']=$status['memory_usage']['wasted_memory']; $graphs['keys']['total']=$status[CACHEPREFIX.'statistics']['max_cached_keys']; foreach ($primes as $prime) { if ($prime>=$graphs['keys']['total']) { $graphs['keys']['total']=$prime; break;} } $graphs['keys']['free']=$graphs['keys']['total']-$status[CACHEPREFIX.'statistics']['num_cached_keys']; $graphs['keys']['scripts']=$status[CACHEPREFIX.'statistics']['num_cached_scripts']; $graphs['keys']['wasted']=$status[CACHEPREFIX.'statistics']['num_cached_keys']-$status[CACHEPREFIX.'statistics']['num_cached_scripts']; $graphs['hits']['total']=0; $graphs['hits']['hits']=$status[CACHEPREFIX.'statistics']['hits']; $graphs['hits']['misses']=$status[CACHEPREFIX.'statistics']['misses']; $graphs['hits']['blacklist']=$status[CACHEPREFIX.'statistics']['blacklist_misses']; $graphs['hits']['total']=array_sum($graphs['hits']); $graphs['restarts']['total']=0; $graphs['restarts']['manual']=$status[CACHEPREFIX.'statistics']['manual_restarts']; $graphs['restarts']['keys']=$status[CACHEPREFIX.'statistics']['hash_restarts']; $graphs['restarts']['memory']=$status[CACHEPREFIX.'statistics']['oom_restarts']; $graphs['restarts']['total']=array_sum($graphs['restarts']); foreach ( $graphs as $caption=>$graph) { echo '7ca972d4da4703a451d61c2099cd9c131f7a0fa65ce03fb0c68244fb3f36a345',$caption,'94b3e26ee717c64999d7867364b1b4a33cbe43783734fc6dfae5442f5e023dba'; foreach ($graph as $label=>$value) { if ($label=='total') { $key=0; $total=$value; $totaldisplay='fe5537d21489511c502b149270ab0db245a2772a6b6107b401db3c9b82c049c2'.($total>999999?round($total/1024/1024).'M':($total>9999?round($total/1024).'K':$total)).'54bdf357c58b8a65c66d7c19c8e4d114e388a4556c0f65e1904146cc1a846bee94b3e26ee717c64999d7867364b1b4a3b90dd5946f0946207856a8a37f441edf'; continue;} $percent=$total?floor($value*100/$total):''; $percent=!$percent||$percent>99?'':$percent.'%'; echo 'a34de1251f0d9fe1e645927f19a896e8',$totaldisplay,'60b089eae79b77605c3f46ffb8ed64c2', ($value>999999?round($value/1024/1024).'M':($value>9999?round($value/1024).'K':$value)),'b90dd5946f0946207856a8a37f441edfcf5b20ae2df2bffa9fede1bbb5ec524f',$percent,'b90dd5946f0946207856a8a37f441edfb6c5a531a458a2e790c1fd6421739d1c',$label,'b90dd5946f0946207856a8a37f441edffd273fcf5bcad3dfdad3c41bd81ad3e5'; $key++; $totaldisplay=''; } echo 'f16b1740fad44fb09bfe928bcc527e0894b3e26ee717c64999d7867364b1b4a3',"\n"; } } function meta_display() { ?> c3dc30fa0edaf702eedbc2e04421d43b 5464b0cf44fdf1d20c715a7c20f12cbedirectives guide5db79b134e9f6b82c0b36e0489ee08ed | a4a59848f7e6dae1e7409cc8ba369e9bfunctions guide5db79b134e9f6b82c0b36e0489ee08ed | 796cbb3fbdf1ccd82fd333e932031d07wiki.php.net5db79b134e9f6b82c0b36e0489ee08ed | c39af205ed01158ddc8d6a8121e3b201pecl5db79b134e9f6b82c0b36e0489ee08ed | 9c2b524ea0c64e25edc5afdbc7379337Zend source5db79b134e9f6b82c0b36e0489ee08ed | 5011fdba663d072a408655eb4d95caf7OCP latest5db79b134e9f6b82c0b36e0489ee08ed 94b3e26ee717c64999d7867364b1b4a3 <?php }
위 내용은 Linux 환경에서 PHP7.0을 설치하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!