この記事では、Linux 環境に PHP7.0 をインストールする方法を紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。
PHP7 と HHVM の比較
実際のシナリオにおける PHP7 のパフォーマンスは、確かに HHVM のパフォーマンスと同等であり、一部のシナリオでは HHVM を超えます。 HHVM の運用と保守は複雑で、マルチスレッド モデルであるため、スレッドがクラッシュを引き起こすとサービス全体がハングし、自動的に再起動されなくなります。また、JIT を採用しているため、再起動後にウォームアップが必要となり、予熱を行わないとパフォーマンスが低下します。また、マルチスレッドモデルはデバッグが難しく、安定性を追求するWebサービスには非常に不向きです。
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
ダウンロード
# 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 のインストール時に設定できない設定がいくつかあります。 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
www.conf構成ファイルの構成に注意してください。 php7 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]# time /usr/ local/php/bin/php search_by_key.php
real 0m0.361s
user 0m0.304s
sys 0m0.057s
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 の構成
公式 Web サイトのアドレス: 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) デモ用:
<?php /* OCP - Opcache Control Panel (aka Zend Optimizer+ Control Panel for PHP) Author: _ck_ (with contributions by GK, stasilok) Version: 0.1.6 Free for any kind of use or modification, I am not responsible for anything, please share your improvements * revision history 0.1.6 2013-04-12 moved meta to footer so graphs can be higher and reduce clutter 0.1.5 2013-04-12 added graphs to visualize cache state, please report any browser/style bugs 0.1.4 2013-04-09 added "recheck" to update files when using large revalidate_freq (or validate_timestamps=Off) 0.1.3 2013-03-30 show host and php version, can bookmark with hashtag ie. #statistics - needs new layout asap 0.1.2 2013-03-25 show optimization levels, number formatting, support for start_time in 7.0.2 0.1.1 2013-03-18 today Zend completely renamed Optimizer+ to OPcache, adjusted OCP to keep working 0.1.0 2013-03-17 added group/sort indicators, replaced "accelerator_" functions with "opcache_" 0.0.6 2013-03-16 transition support as Zend renames product and functions for PHP 5.5 (stasilok) 0.0.5 2013-03-10 added refresh button (GK) 0.0.4 2013-02-18 added file grouping and sorting (click on headers) - code needs cleanup but gets the job done 0.0.2 2013-02-14 first public release * known problems/limitations: Unlike APC, the Zend OPcache API - cannot determine when a file was put into the cache - cannot change settings on the fly - cannot protect opcache functions by restricting execution to only specific scripts/paths * todo: Extract variables for prefered ordering and better layout instead of just dumping into tables File list filter */ // ini_set('display_errors',1); error_reporting(-1); if ( count(get_included_files())>1 || 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; } ?>nbsp;html> <title>OCP - Opcache Control Panel</title> <meta> <style> 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;} </style> <!--[if lt IE 9]><script type="text/javascript" defer="defer"> window.οnlοad=function(){var i,t=document.getElementsByTagName('table');for(i=0;i<t.length;i++){if(t[i].parentNode.className=='graph')t[i].style.height=150-(t[i].clientHeight-150)+'px';}} </script><![endif]--> <p> </p><h1 id="a-Opcache-Control-Panel-a"><a>Opcache Control Panel</a></h1> <p> <a>Details</a> <a>Files</a> <a>Reset</a> <?php if ( function_exists(CACHEPREFIX.'invalidate') ) { ?> <a>Recheck</a> <?php } ?> <a>Refresh</a> </p> <?php if ( !function_exists(CACHEPREFIX.'get_status') ) { echo '<h2>Opcache not detected?'; die; } if ( !empty($_GET['FILES']) ) { echo '<h2 id="files-cached">files cached</h2>'; files_display(); echo ''; 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).+?(\
[^>]+\\ | [0-9\,\. ]+\\/','',$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 'memory'; print_table($status['memory_usage']); unset($status[CACHEPREFIX.'statistics']['start_time'],$status[CACHEPREFIX.'statistics']['last_restart_time']); echo 'statistics'; print_table($status[CACHEPREFIX.'statistics']); } if ( empty($_GET['ALL']) ) { meta_display(); exit; } if ( !empty($configuration['blacklist']) ) { echo 'blacklist'; print_table($configuration['blacklist']); } if ( !empty($opcache[3]) ) { echo 'runtime'; echo $opcache[3]; } $name='zend opcache'; $functions=get_extension_funcs($name); if (!$functions) { $name='zend optimizer+'; $functions=get_extension_funcs($name); } if ($functions) { echo 'functions'; print_table($functions); } else { $name=''; } $level=trim(CACHEPREFIX,'_').'.optimization_level'; if (isset($configuration['directives'][$level])) { echo 'optimization levels'; $levelset=strrev(base_convert($configuration['directives'][$level], 10, 2)); $levels=array( 1=>'Constants subexpressions elimination (CSE) true, false, null, etc.Optimize series of ADD_STRING / ADD_CHAR Convert CAST(IS_BOOL,x) into BOOL(x) Convert INIT_FCALL_BY_NAME + DO_FCALL_BY_NAME into DO_FCALL', 2=>'Convert constant operands to expected types Convert conditional JMP with constant operands Optimize static BRK and CONT', 3=>'Convert $a = $a + expr into $a += expr Convert $a++ into ++$a Optimize series of JMP', 4=>'PRINT and ECHO optimization (defunct)', 5=>'Block Optimization - most expensive pass Performs many different optimization patterns based on control flow graph (CFG)', 9=>'Optimize register allocation (allows re-usage of temporary variables)', 10=>'Remove NOPs' ); echo '
ini'; print_table(ini_get_all($name,true)); } foreach ($configuration as $key=>$value) { echo '',$key,''; print_table($configuration[$key]); } exit; } meta_display(); echo ' |
以上がLinux環境にPHP7.0をインストールする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

ドリームウィーバー CS6
ビジュアル Web 開発ツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。
