ホームページ  >  記事  >  バックエンド開発  >  Linux で yum を使用して PHP APC をインストールし、examples_PHP チュートリアルを使用する

Linux で yum を使用して PHP APC をインストールし、examples_PHP チュートリアルを使用する

WBOY
WBOYオリジナル
2016-07-13 17:07:35962ブラウズ

今日は、大きなファイルのアップロードの進行状況エフェクトを作成したいと思います。その後、それを実現できる PHP apc があるとのことで、Baidu の PHP 情報を調べました。 APC は 2 つのキャッシュ関数を提供します。1 つはオペコード (ターゲット ファイル) のキャッシュであり、これを apc_compiler_cache と呼びます。また、いくつかの機能も提供します このインターフェイスは、PHP 開発者がユーザー データをメモリに保存するために使用します。これを apc_user_cache と呼びます。APC キャッシュを使用して、その効果を確認したいのですが、対応するバージョンの php-apc.dll 拡張機能が見つかりません。ファイルは Windows にあるので、Linux を使用する必要があります

の下にインストールされます。ソースコードからインストールする必要はありません。yum:

だけでインストールできます。 まず、apc 依存関係パッケージをインストールする必要があります:

コードは次のとおりですコードをコピーyum install php-pear php-devel httpd-devel pcre-devel gcc make

次に、pecl を使用して APC をインストールします:

コードは次のとおりですコードをコピーpecl インストール APC

設定ファイルに apc 拡張子を追加します:

コードは次のとおりですコードをコピーecho "extension=apc.so" > /etc/php.d/apc.ini

最後にサーバーを再起動することを忘れないでください:

コードは次のとおりですコードをコピーサービスhttpdの再起動
を指定し、PHP の phpinfo() 関数を使用して以下を検出します。

APCキャッシュ関数例

APC では、APC によってもたらされた大きなファイルのアップロードの進行状況をキャッシュする機能も利用できます。 php.ini で apc.rfc1867 を 1 に設定する必要があります。

そして、隠しフィールド APC_UPLOAD_PROGRESS をフォームに追加します。このフィールドの値は、一意性を確保するためにランダムにハッシュを生成します。

APC には多くの設定があり、php.ini で次のように設定できます:


コードは次のとおりです

PHPで一般的なAPC関数を試してみました:

コードをコピー
[APC]

apc.有効 = 1
apc.shm_segments = 1
apc.shm_size = 64
apc.max_file_size = 10M
apc.stat=1

コードは次のとおりです コードをコピー


/*データストレージに変数を追加します
bool apc_add ( string $key ,mixed $var [, int $ttl = 0 ])
キーが存在する場合は上書きされず、falseが返されます
*/
apc_add('url','http://www.111cn.Net');

/*保存されている変数をキャッシュから取得します
混合 apc_fetch (混合 $key [, bool &$success ] )
*/
var_dump(apc_fetch('url'));

/*変数を保存するには apc_store() を使用します。.key は一意であるため、2 つの値が同じ名前を使用している場合、元の値は新しい値で上書きされます
bool apc_store ( string $key ,mixed $var [, int $ttl = 0 ])
*/
apc_store('var','新しい変数');

/*ユーザーキャッシュから変数を削除します
混合 apc_delete (文字列 $key)
*/
apc_delete('url');

/*APC キャッシュをクリアします
bool apc_clear_cache ([ string $cache_type ] )
*/
apc_clear_cache('ユーザー');

/*APC に特定のキーがあるかどうかを確認し、キーが存在する場合は TRUE を返し、そうでない場合は FALSE を返します
混合 apc_exists (混合 $keys )
*/
if(apc_exsists('url')){
echo "このキーは実際に存在します";
}その他{
echo "このキーは存在しないようです";
}

/*保存されている数値をインクリメントし、成功した場合はキーの現在の値を返し、失敗した場合は FALSE を返します
int apc_inc ( string $key [, int $step = 1 [, bool &$success ]] )
*/
apc_store('anumber', 42);
$ret = apc_inc('anumber', 1, $fail);
var_dump($ret);
var_dump($fail);

/* 変数に格納されている数値をデクリメントし、成功した場合はキーの現在の値を返し、失敗した場合は FALSE を返します
int apc_dec ( string $key [, int $step = 1 [, bool &$success ]] )
*/
$ret = apc_dec('astring', 1, $fail);
var_dump($ret);
var_dump($fail);

さらに、非常に便利な APC キャッシュ クラスが提供されています:

コードは次のとおりです コードをコピー


/*************************************************** * *********************************
※APCキャッシュクラス、著作権(InitPHPフレームワークより抜粋)
************************************************* * *********************************/
クラス MyApc {

/**
* APC キャッシュセットキャッシュ
* キャッシュキー、値、キャッシュ時間を設定します
* @param 文字列 $key KEY 値
* @param string $value value
* @param string $time キャッシュ時間
​*/
パブリック関数 set_cache($key, $value, $time = 0) {
if ($time == 0) $time = null // null の場合は永続的にキャッシュします
apc_store($key, $value, $time) を返します;;
}


/**
* APC キャッシュ - キャッシュを取得
* KEYを通じてキャッシュデータを取得します
* @param 文字列 $key KEY 値
​*/
パブリック関数 get_cache($key) {
apc_fetch($key) を返します;
}

/**
* APC キャッシュ - キャッシュをクリアします
* memcache からキャッシュを削除します
* @param 文字列 $key KEY 値
​*/
パブリック関数 Clear($key) {
apc_delete($key) を返します;
}

/**
* APC キャッシュ - すべてのキャッシュをクリア
※この機能の使用は非推奨です
* @return
​*/
パブリック関数 clear_all() {
apc_clear_cache('user'); // ユーザーキャッシュをクリアします
Return apc_clear_cache() //キャッシュをクリア
; }

/**
* APCキャッシュが存在するか確認してください
* @param 文字列 $key KEY 値
​*/
パブリック関数が存在します($key) {
apc_exists($key) を返します;
}

/**
* フィールドの自動インクリメント - カウントに使用されます
* @param 文字列 $key KEY 値
* @param int $step 新しいステップ値
​*/
public function inc($key, $step) {
Return apc_inc($key, (int) $step);
}

/**
* フィールドのデクリメント - カウントに使用されます
* @param 文字列 $key KEY 値
* @param int $step 新しいステップ値
​*/
パブリック関数 dec($key, $step) {
Return apc_dec($key, (int) $step);
}

/**
* APC キャッシュ情報を返します
​*/
パブリック関数 info() {
apc_cache_info() を返します;
}
}


//使用方法:
$apc = 新しい MyApc();
$apc->set_cache('key','www.phpddt.com によるテスト');
print_r($apc->get_cache('key'));


概要

1. 最高のパフォーマンスを実現するには、Spinlocks ロック機構を使用します。
2. APC は、APC キャッシュを監視および管理するための apc.php を提供します。管理者名とパスワードを忘れずに変更してください
3. APC はデフォルトで mmap 匿名マッピングを通じて共有メモリを作成し、キャッシュ オブジェクトはこの「大きな」メモリ空間に保存されます。 APC自身が管理しています

共有メモリを管理する
4. 統計を通じて、apc.shm_size、apc.num_files_hints、および apc.user_entries_hint の値を調整する必要があります。最後まで

良い
5. まあ、apc.stat = 0 のほうがパフォーマンスが向上することは認めます。あなたの望むものなら何でも受け入れます
6. PHP の事前定義定数。apc_define_constants() 関数を使用できます。ただし、APC 開発者によると、pecl Hidef の方がパフォーマンスが優れているとのことです

いいですね、定義を捨てるのは非効率です。
7. 関数 apc_store()、システム設定などの PHP 変数の場合、ライフサイクルはアプリケーション全体です (httpd デーモンから httpd デーモンまで)

プロセスのシャットダウン)、Memcached の代わりに APC を使用する方がよいでしょう。結局のところ、ネットワーク伝送プロトコル tcp は使用しないでください。

8. APC は、頻繁に変更されるユーザーデータを apc_store() 関数を通じてキャッシュするのには適しておらず、いくつかの奇妙な現象が発生します。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/629903.html技術記事今日は、大きなファイルのアップロード進行効果を実行したいと思います。その後、PHP APC がそれを実現できるとネットで調べました。PHP APC には、オペコード (ターゲット ファイル) のキャッシュという 2 つのキャッシュ機能が用意されています。 ...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。