目次
PHP7 の利点は何ですか?
@Laruence PHP7 をコンパイルするには GCC 4.8 以降を使用することをお勧めします。GCC バージョンを確認してください:
2016 年 2 月 15 日時点の GCC の最新バージョンは 5.3.0 です。GCC 公式 Web サイトにアクセスしてダウンロード アドレスを表示し、選択してください。
PHP7 のコンパイルとインストールを開始します
./configure --help
ログイン後にコピー
" >
./configure --help
ログイン後にコピー
$ service nginx configtest$ service nginx reload
ログイン後にコピー
" >
$ service nginx configtest$ service nginx reload
ログイン後にコピー
因此最后只采纳了“开启Opache”、“使用 GCC 4.8 以上的编译器”这两项。
清理环境
增加软链接
安装并配置 PHP7-MEMCACHED
为什么只能用 php-memcached (有d)
参考的博客文章
ホームページ バックエンド開発 PHPチュートリアル WordPress 用の PHP 7.0.3 をコンパイルおよびインストールするための完全なガイド

WordPress 用の PHP 7.0.3 をコンパイルおよびインストールするための完全なガイド

Jun 23, 2016 pm 01:16 PM

PHP7 の利点は何ですか?

まず第一に、PHP5 よりもメモリ使用量が少なく、第二に、パフォーマンスが 2 倍以上高速になり、最終的に WordPress の QPS はオリジナルの約 3 倍に向上します。 Re p WordPress 4.4 QPS の比較: 数値が大きいほど、QPS が高くなります

この例のホスト VPS 構成

帯域幅: 1Mbps
    CPU: 1 コア
  • オペレーティング システム: ubuntu 12.04 64 ビット
  • メモリ: 1GB
  • Yundun: はい
  • 環境: Linux + Nginx + Memcached + PHP-FPM
  • なぜコンパイルしてインストールする必要があるのですか?
  • このサイトで使用されている Ubuntu 12.04 のバージョンは低すぎます。 -get install では、GCC および PHP7 の最新バージョンをインストールできません。
  • GCC バージョンを確認してください

@Laruence PHP7 をコンパイルするには GCC 4.8 以降を使用することをお勧めします。GCC バージョンを確認してください:

$ gcc -v
ログイン後にコピー

4.8 未満の場合は、GCC をコンパイルしてアップグレードすることをお勧めします。 Linux で gcc をアップグレードする方法 – 個人テストあり – C++ 趣味の作者のブログ。

2016 年 2 月 15 日時点の GCC の最新バージョンは 5.3.0 です。GCC 公式 Web サイトにアクセスしてダウンロード アドレスを表示し、選択してください。

この例では、GCC 4.6.3 から GCC 5.3.0 にアップグレードします。手順は次のとおりです:

$ wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-5.3.0/gcc-5.3.0.tar.gz$ tar -xf gcc-5.3.0.tar.gz$ cd gcc-5.3.0
ログイン後にコピー

download_prerequisites スクリプトを実行します。このスクリプトは、必要な依存関係ファイルとライブラリを自動的にダウンロードします:

$ ./contrib/download_prerequisites
ログイン後にコピー

出力を作成します。すべての中間ファイルはこのディレクトリに配置されます。

$ mkdir gcc_temp$ cd gcc_temp
ログイン後にコピー

Run

$ ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib$ make && make install
ログイン後にコピー

特別な注意を払ってください

コンパイル時間はマシンのパフォーマンスに依存し、より多くのメモリを消費します。サーバーのメモリも非常に不足している場合は、500M SWAP スワップ領域を有効にしてください。そうしないと、Make フェーズ中にメモリ不足のためエラーが報告されます。この例ではサーバーの IO パフォーマンスが非常に悪いため、終了後に SWAP スワップ領域をオフにしてください。

すごい

この例は、GCC 5.3.0 をコンパイルするのに 2 ~ 3 時間かかりました。 PHP7 のコンパイルとインストールが完了したら、この例では SWAP 交換領域をオフにします:

$ SWAP=/tmp/swap$ dd if=/dev/zero of=$SWAP bs=1M count=500$ mkswap $SWAP$ sudo swapon $SWAP
ログイン後にコピー

PHP7 のコンパイルとインストールを開始します

2016 年 2 月 15 日の時点で、PHP7 の最新の安定バージョンは PHP 7.0.3 です。バージョン情報: http://php.net/downloads.php 。最新バージョンをダウンロードします:

$ sudo swapoff -a
ログイン後にコピー

最初に構成ヘルプを参照できます:

$ wget http://cn2.php.net/get/php-7.0.3.tar.bz2/from/this/mirror$ tar jxvf mirror$ cd php-7.0.3/
ログイン後にコピー

この例で使用されている構成 (/usr/local/php はインストール先の場所です)

./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
ログイン後にコピー

インストールする必要があるモジュールは、 libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel mysql pcre-develcurl-devel libxslt です。 -devel など...

次の実行:

$ sudo apt-get install libcurl4-gnutls-dev
ログイン後にコピー

コンパイルとインストールを開始します。

PHP7のコンパイルとインストールが完了した画面

PHP7の設定と最適化

設定ファイルをコピー

完了後も、いくつかの設定と最適化を行う必要があります。まず、設定ファイルをコピーします:

$ make && make install
ログイン後にコピー
ログイン後にコピー

PHP7-FPM のテスト開始

オンライン サーバーでは通常、PHP5-FPM サービスが実行されています。 www.conf 内のユーザーとグループを、オンラインで使用されるユーザー名とユーザー グループに変更してください。競合を避けるために、デフォルトのポート番号 9000 を変更します。

PHP7-FPM を起動します:

$ 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/init.d.php-fpm /etc/init.d/php-fpm
ログイン後にコピー

起動に成功すると、phpinfo() などが表示されます。

この例の PHP7-FPM のテスト ポートは 9008 です。オンライン nginx 設定が bokeyy であると仮定すると、次のようになります。

$ service php-fpm start
ログイン後にコピー

$ cp /etc/nginx/site-available/bokeyy /etc/nginx/site-enabled/bokeyy_php7$ vim /etc/nginx/site-enabled/bokeyy_php7
ログイン後にコピー

の 9000 を 9008 に変更し、ポートを開きます。次に、

rrree

は、新しいポート Web サイトのすべての側面が正常であるかどうかをテストできます。

パフォーマンス比較テスト

次に、PHP5.3.10 (ソース) と効率を直接比較してみましょう。

Opache を使用しない場合の PHP7.0.3 と PHP5.3.10 のパフォーマンスを比較すると、PHP7 は約 2 倍高速ですが、あまり明らかではありません

Opache を使用した場合の PHP7.0.3 と PHP5.3.10 のパフォーマンスを比較すると、パフォーマンスの向上は非常に顕著です

test .php content

fastcgi_pass 127.0.0.1:9000;
ログイン後にコピー

opcache を設定

したがって、Opcache (http://php.net/opcache) を有効にする必要があります。そして、WordPress の QPS を大幅に改善できることを証明する写真がすでにあります。

Opache を使用した場合と使用しない場合の WordPress 4.4 の QPS 比較

この例では、Opache の公式に推奨される構成と @Laruence が推奨する Opache 構成を組み合わせて、php.ini に次の内容を追加します:

$ service nginx configtest$ service nginx reload
ログイン後にコピー

その中に /usr/local/php/ lib/php/extensions /no-debug-non-zts-20151012/opcache.so は、opcache.so が存在するアドレスです。

PHP7-FPM を再起動します:

<?php$a = array();    for($i=0;$i<600000;$i++){        $a[$i] = $i;        }    foreach($a as $i)    {        array_key_exists($i, $a);    }?>
ログイン後にコピー

ここですべてのインストールと設定は終了です。

Yayicheng @Laruence には、PHP7 を最高のパフォーマンスに到達させるためのヒント | 04 Dec 15 という記事があり、PHP7 を高速化するための役立つ提案がたくさんあります。

この例は一部のみを採用しています。 php5-fpm プロセスによって毎日わずか 1G の小さなメモリが埋められるサーバーの場合、HugePage と Opcache ファイル キャッシュの両方に一定量の冗長メモリが必要ですが、これは適切ではありません。

让你的PHP7更快(GCC PGO) 建议先训练一下 GCC 再编译针对 WordPress 的定制化 PHP7 版本似乎也值得采纳。但是,由于服务器资源严重不足,基本上所有 WordPress 页面都不是即时生成的,而是走了时效为半天的 WP Super Cache 缓存。所以,生成 WordPress 首页的速度提升 7-10% 对本例的服务器来说意义很有限,所以也没有做了。

因此最后只采纳了“开启Opache”、“使用 GCC 4.8 以上的编译器”这两项。

清理环境

如果测试 PHP7-FPM 没有任何问题,就可以删掉测试网站

$ rm /etc/nginx/site-enabled/bokeyy_php7
ログイン後にコピー

编辑 www.conf 把 PHP7-FPM 的端口改成 9000

$ vim /usr/local/php/etc/php-fpm.d/www.conf
ログイン後にコピー

最后关掉 PHP5-FPM,用 PHP7-FPM 来替代:

$ service php-fpm configtest$ service php5-fpm stop$ service php-fpm restart$ service nginx configtest$ service nginx reload
ログイン後にコピー

增加软链接

为了无论在哪个目录下输入 php 都能调用刚刚安装的 /usr/local/php/bin/php ,而不用输入这么长,建立几个软链接

$ cd /usr/bin$ ln -s /usr/local/php/bin/php php$ ln -s /usr/local/php/bin/phpize phpize$ ln -s /usr/local/php/bin/php-config php-config
ログイン後にコピー

现在只要

$ php -v
ログイン後にコピー

就能查看刚刚安装的 php 版本了。以后安装 PHP 插件也可以直接 phpize 和 php-config 了。

本例还有 WordPress 网站需要 Memcache,所以还没有结束。

安装并配置 PHP7-MEMCACHED

你一定好奇 PHP 的 memcached 和 memcache 插件有什么区别。事实上,它们功能差不多,都依赖默认在 11211 端口的 memcached 服务,只是封装方法不同,而 php-memcached 更新更勤快一些,功能也更多。

最重要的是, 在安装 PHP 7.0.3 你会发现,你只能装 php-memcached ! 注意有这个 d (截至 2016年2月15日)。让我们开始吧:

请到 github 下载 php-memcached 插件的 php7 分支( https://github.com/php-memcached-dev/php-memcached/tree/php7 ):

$ wget https://github.com/php-memcached-dev/php-memcached/archive/php7.zip
ログイン後にコピー

解压并安装:

$ unzip php7.zip$ cd php-memcached-php7/$ root=/usr/local/php$ $root/bin/phpize$ ./configure --with-php-config=$root/bin/php-config
ログイン後にコピー

这一步可能会提示你没有 libmemcached 库:

$ cd ..$ wget  https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz$ tar xvf libmemcached-1.0.18.tar.gz$ cd libmemcached-1.0.18$ ./configure$ cd ../php-memcached-php7/$ ./configure --with-php-config=$root/bin/php-config
ログイン後にコピー

可能还提示不支持 memcache sasl ,推荐禁用,好吧!

$ ./configure --with-php-config=$root/bin/php-config --disable-memcached-sasl
ログイン後にコピー

终于可以运行

$ make && make install
ログイン後にコピー
ログイン後にコピー

最后将 memcached.so 的地址加入 php.ini 就装好了:

$ vim /usr/local/php/lib/php.ini
ログイン後にコピー

加入

extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/memcached.so
ログイン後にコピー

但是还有一个坑前面没有提及: WordPress 官方 Memcached 插件 只支持 php-memcache ,注意没有 d。所以我们用这个支持 php-memcached 的插件 https://github.com/tollmanz/wordpress-pecl-memcached-object-cache 。按照链接所示一步步配置来就行了。

感兴趣的还可以看看插件作者关于 php-memcache 和 php-memcached 两个 PHP 插件区别的文章: WordPress Object Cache Driven By The PECL Memcache(d) Extension 。

为什么只能用 php-memcached (有d)

截止 2015年2月15日,PHP7.0.3 下直接试图安装 php-memcache 会报错:

fatal error: ext/standard/php_smart_str.h: No such file or directory
ログイン後にコピー

查了一下原因 ,是因为 PHP7 里面,这个文件改成了 php_smart_string.h 。博主尝试过手动将文件名改成正确的,然而也没有用,还会报错:

error: 'RETURN STRING' undeclared(first use in this function)
ログイン後にコピー

所以这是插件暂不兼容 PHP7 。只能等待,直到 php-memcache 插件更新。所以博主最后放弃,按照上文,使用了 php-memcached 插件作为替代。

参考的博客文章

  • The Definitive PHP 7.0 & HHVM Benchmark
  • linux下升级gcc的方法 – 亲测可用 – C++爱好者博客
  • 让PHP7达到最高性能的几个Tips | 04 Dec 15
  • Linux环境PHP7.0安装
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

PHPにおける後期静的結合の概念を説明します。 PHPにおける後期静的結合の概念を説明します。 Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 Mar 28, 2025 pm 05:12 PM

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

フレームワークセキュリティ機能:脆弱性から保護します。 フレームワークセキュリティ機能:脆弱性から保護します。 Mar 28, 2025 pm 05:11 PM

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

See all articles